我需要paramiko(python)的一些幫助。我有一個帶有非標準SSH接口的服務器,所以我使用了交互模式,並且我在同一個通道下運行了幾個命令(exec_command不適用於我)。一切都很好,但我想介紹一些每命令超時,因爲應用程序停留在沒有收到數據時的while循環。 Channel.settimeout似乎無法正常工作,因爲第一條命令之後的應用程序超時。由於線程,我無法使用信號。當我使用time()來計算數據變量爲空後的時間時,我注意到整個代碼執行掛起,很可能等待通道數據。任何建議如何解決這個將不勝感激。python paramiko timeout for commands
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
connect = ssh.connect(host,username=,password=,timeout=20)
file=open("test.txt","w+")
channel = ssh.invoke_shell()
data = channel.recv(5000)
set_of_commands = ["cmd\n","reset\n"]
while set_of_commands is not None:
file.write(data)
# New command might be executed here if we have 'system:'
if re.match("system:",data) is not None:
try:
command=set_of_commands.pop()
channel.send(command)
except:
break
data=channel.recv(5000)
超時是針對TCP連接超時。 – 2014-11-03 03:55:26
您是否嘗試過使用channel.recv_exit_status()? – 2014-11-03 04:04:45