我想寫一個python腳本,可以ssh到遠程服務器,並可以執行簡單的命令,如ls,cd從python客戶端。但是,在成功將ssh傳入服務器後,我無法從僞終端讀取輸出。任何人都可以在這裏幫助我,這樣我就可以在服務器上執行一些命令。使用os.forkpty()創建一個僞終端ssh到遠程服務器,並與它通信
下面是示例代碼:
#!/usr/bin/python2.6
import os,sys,time,thread
pid,fd = os.forkpty()
if pid == 0:
os.execv('/usr/bin/ssh',['/usr/bin/ssh','[email protected]',])
sys.exit(0)
else:
output = os.read(fd,1024)
print output
data = output
os.write(fd,'password\n')
time.sleep(1)
output = os.read(fd,1024)
print output
os.write(fd,'ls\n')
output = os.read(fd,1024)
print output
輸出示例:
[email protected]'s password:
Last login: Wed Aug 24 03:16:57 2011 from 1x.x.x.xxxx
-bash: ulimit: open files: cannot modify limit: Operation not permitted
host: /home/user>ls
你試圖在這裏做什麼會更好地與公共密鑰來完成,至少密碼的一部分。 – glglgl
我猜你還沒聽說過[fabric](http://docs.fabfile.org/en/1.2.1/index.html)? – zeekay