اتصال SSH مع Python _ امثلة بايثون

ملخص

كتبت الأسبوع الماضي مقالة – سلعة حول وحدة pexpect في Python وكيف يمكنك استخدامها لتلبية بعض احتياجات التشغيل الآلي ، مثل ssh و ftp.

أود الاستمرار في هذا الموضوع والكتابة عن فئة pxssh. باستخدام وحدة pxssh ، من السهل الوصول إلى الخوادم الأخرى عبر SSH. تستند هذه المقالة إلى الوثائق الرسمية الموجودة هنا: http://pexpect.sourceforge.net/pxssh.html

ما هو pxssh؟

يعتمد Pxssh على pexpect. يمتد صنفه pexpect.spawn ليتخصص في إعداد اتصالات SSH. أستخدم pxssh كثيرًا لإجراء اتصالات ssh في لغة python.

وثائق الوحدة

افتح Terminal واكتب الأوامر التالية للحصول على مساعدة حول الوحدة

import pxssh
help(pxssh)

Help on module pxssh:

NAME
   pxssh

FILE
   /usr/lib/python2.7/dist-packages/pxssh.py

DESCRIPTION
   This class extends pexpect.spawn to specialize setting up SSH connections.
   This adds methods for login, logout, and expecting the shell prompt.
    
   $Id: pxssh.py 513 2008-02-09 18:26:13Z noah $

CLASSES
   pexpect.ExceptionPexpect(exceptions.Exception)
       ExceptionPxssh
   pexpect.spawn(__builtin__.object)
       pxssh

يمكنك أيضًا مشاهدة المساعدة هنا http://pexpect.sourceforge.net/pxssh.html

طرق وعملية تسجيل الدخول

يضيف Pxssh طرقًا لتسجيل الدخول والخروج وتوقع موجه shell. يقوم بالعديد من الأشياء الصعبة للتعامل مع العديد من المواقف في عملية تسجيل الدخول إلى SSH.

على سبيل المثال ، إذا كانت الجلسة هي أول تسجيل دخول لك ، فإن pxssh يقبل تلقائيًا الشهادة عن بُعد ؛ أو إذا كان لديك إعداد مصادقة المفتاح العام ، فلن تنتظر pxssh مطالبة كلمة المرور.

كيف يعمل pxssh؟

يستخدم pxssh موجه shell لمزامنة الإخراج من المضيف البعيد. من أجل جعل هذا أكثر قوة ، فإنه يضبط موجه shell على شيء فريد من نوعه أكثر من $ أو # فقط.

يجب أن يعمل هذا على معظم قذائف Borne / Bash أو Csh.

مثال

يقوم هذا المثال بتشغيل بعض الأوامر على خادم بعيد ويطبع النتيجة.

أولاً نقوم باستيراد الوحدات التي نحتاجها. (pxssh و getpass)

نقوم باستيراد وحدة getpass ، والتي ستطلب من المستخدم إدخال كلمة مرور ، دون تكرار ما يكتبونه في وحدة التحكم.


import pxssh
import getpass
try:                                                            
    s = pxssh.pxssh()
    hostname = raw_input('hostname: ')
    username = raw_input('username: ')
    password = getpass.getpass('password: ')
    s.login (hostname, username, password)
    s.sendline ('uptime')   # run a command
    s.prompt()             # match the prompt
    print s.before          # print everything before the prompt.
    s.sendline ('ls -l')
    s.prompt()
    print s.before
    s.sendline ('df')
    s.prompt()
    print s.before
    s.logout()
except pxssh.ExceptionPxssh, e:
    print "pxssh failed on login."
    print str(e)
Code language: PHP (php)
قم بتشغيل أمر على خادم SSH بعيد

دعنا نعرض مثالا آخر. لتشغيل أمر (“وقت التشغيل”) ولطباعة الإخراج ، عليك القيام بشيء من هذا القبيل:

import pxssh
s = pxssh.pxssh()
if not s.login ('localhost', 'myusername', 'mypassword'):
    print "SSH session failed on login."
    print str(s)
else:
    print "SSH session login successful"
    s.sendline ('uptime')
    s.prompt()         # match the prompt
    print s.before     # print everything before the prompt.
    s.logout()
    
#We can also execute multiple command like this:
s.sendline ('uptime;df -h')
Code language: PHP (php)

لمزيد من المعلومات حول pxssh ، يرجى مراجعة المسؤول توثيق

لا يوجد اعجابات