كيفية سكب في الثعبان؟ [python]


Answers

قد تكون مهتمة في محاولة بيكسيكت ( مشروع سورسيفورج ). هذا من شأنه أن يسمح لك للتعامل مع المطالبات التفاعلية لكلمة المرور الخاصة بك.

وإليك مقتطف من استخدام المثال (ل فتب) من الموقع الرئيسي:

   # This connects to the openbsd ftp site and
   # downloads the recursive directory listing.
   import pexpect
   child = pexpect.spawn ('ftp ftp.openbsd.org')
   child.expect ('Name .*: ')
   child.sendline ('anonymous')
   child.expect ('Password:')
   child.sendline ('noah@example.com')
   child.expect ('ftp> ')
   child.sendline ('cd pub')
   child.expect('ftp> ')
   child.sendline ('get ls-lR.gz')
   child.expect('ftp> ')
   child.sendline ('bye')
Question

ما هي الطريقة الأكثر بيثونيك ل سكب ملف في بيثون؟ الطريق الوحيد الذي أدركه هو

os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )

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

أنا على علم conch الملتوية، ولكني أفضل لتجنب تنفيذ سكب نفسي عبر وحدات سش مستوى منخفض.

أنا على بينة من paramiko ، وحدة بيثون التي تدعم سش و سفتب؛ ولكن لا يدعم سكب.

خلفية: أنا الاتصال بجهاز توجيه لا يدعم سفتب ولكن يدعم سش / سكب، لذلك سفتب ليس خيارا.

إديت : هذا هو نسخة مكررة من كيفية نسخ ملف إلى ملقم بعيد في بيثون باستخدام سكب أو سش؟ . ومع ذلك ، فإن هذا السؤال لا يعطي إجابة محددة سكب التي تتعامل مع مفاتيح من داخل الثعبان. أنا آمل في طريقة لتشغيل كود نوع من مثل

import scp

client = scp.Client(host=host, user=user, keyfile=keyfile)
# or
client = scp.Client(host=host, user=user)
client.use_system_keys()
# or
client = scp.Client(host=host, user=user, password=password)

# and then
client.transfer('/etc/local/filename', '/etc/remote/filename')



إذا قمت بتثبيت المعجون على win32 تحصل على بكب (المعجون سكب).

بحيث يمكنك استخدام os.system الإختراق على win32 أيضا.

(ويمكنك استخدام المعجون وكيل لإدارة مفتاح)

آسف أنها ليست سوى الإختراق (ولكن يمكنك التفاف عليه في فئة الثعبان)




إلقاء نظرة على النسيج . ويمكن العثور على مثال هنا .




يمكنك استخدام الحزمة الفرعية ونداء الأوامر لاستخدام الأمر سكب من شل.

from subprocess import call

cmd = "scp user1@host1:files user2@host2:files"
call(cmd.split(" "))



أنا في حين أنني وضعت معا النحلة سكب نسخة النصي الذي يعتمد على باراميكو. وهو يتضمن التعليمات البرمجية للتعامل مع الاتصالات مع مفتاح خاص أو عامل مفتاح سش مع تراجع إلى مصادقة كلمة المرور.

http://code.activestate.com/recipes/576810-copy-files-over-ssh-using-paramiko/