كتبت الأسبوع الماضي مقالة – سلعة حول وحدة 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 ، يرجى مراجعة المسؤول توثيق