我想使用pexpect從服務器的scp文件,但它似乎什麼都不做(甚至沒有錯誤信息)。這裏是我的代碼:pexpect:期望各種行
import pexpect
child=pexpect.spawn('scp -r [email protected]:route/file .')
child.expect("[email protected]'s password:")
child.sendline('password')
我認爲,問題出在child.expect命令,因爲「用戶@主機的密碼:」是的大約30行歡迎信息,其中包括特殊caracters的最後一行。有沒有什麼辦法可以讓觀察者期待不止一條線或任何東西?或者等待X秒,然後輸入密碼?
編輯:它與child.wait()命令,但它停在第9個文件。它發生的第十個非常大(約250Mb),我不知道它是否與它有關...謝謝!
編輯:我把線
child.logfile=sys.stdout
後
child=pexpect.spawn('scp -r [email protected]:route/file .')
和我所得到的在屏幕上,而不是在一個文件,是通過「用戶@主機的密碼完成的歡迎信息:「,然後我在同一行看到了密碼,但我仍然沒有得到這些文件。
任何人都知道如何解決它?
謝謝大家!
'expect'將繼續掃描,直到它看到您給它的字符串,所以您提供的代碼應該可以工作。試着設置'child.logfile = sys.stdout'來看看發生了什麼。 –
嘗試在最後添加'child.wait()',以等待孩子完成。 – jfs