2014-09-11 53 views
1

我寫了一個python程序。我有conf文件,我在conf文件裏寫了路由器配置命令,我想在paramiko裏執行這些命令。我有一個問題 - 錯誤消息如下。你能幫我嗎 ? Python帕拉米科錯誤

CODE:

#!/usr/bin/env python 
import paramiko 
ip="10.100.1.200" 
ssh=paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(ip,username="admin",password="pass") 

text=open("conf") 

for komut in text.readlines(): 

     stdin, stdout, stderror = ssh.exec_command(komut) 
     for line in stdout.readlines(): 
         print line.strip() 


ssh.close() 

text.close() 

錯誤消息:

Traceback (most recent call last): 
    File "./configmaker.py", line 13, in <module> 
    stdin, stdout, stderror = ssh.exec_command(str(komut.strip())) 
    File "/usr/lib/python2.7/dist-packages/paramiko/client.py", line 370, in exec_command 
    chan = self._transport.open_session() 
    File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 662, in open_session 
    return self.open_channel('session') 
    File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 764, in open_channel 
    raise e 
EOFError 

回答

3

嘗試使用此代碼:

import paramiko 

if __name__ == "__main__": 
    ip = "127.0.0.1" 
    username = "admin" 
    password = "root" 

    ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect(ip,username=username,password=password) 
    ssh_transport = ssh.get_transport() 

    for command in ("ls /tmp", "date"): 
     chan = ssh_transport.open_session() 
     chan.exec_command(command) 
     exit_code = chan.recv_exit_status() 
     stdin = chan.makefile('wb', -1)   # pylint: disable-msg=W0612 
     stdout = chan.makefile('rb', -1) 
     stderr = chan.makefile_stderr('rb', -1) # pylint: disable-msg=W0612 
     output = stdout.read() 
     print output 
0

嘗試此代碼,第一conf文件複製到遠程服務器,並執行該文件。

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
host = str(host) 
user = 'root' 
pw = 'root123' 
ssh.connect(host, username=user, password=pw) 

filepath = "conf" 
remote_path = "/root/qats_tool.tar" 

sftp = ssh.open_sftp() 
sftp.put(filepath, remote_path) 

command="./conf" 
stdin, stdout, stderr = ssh.exec_command(command) 
sftp.close()