首页 文章

Ssh Socket已关闭 . 想要Linux Box的交互式Ssh shell自动化

提问于
浏览
0

进口paramiko

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

创建Ssh会话

ssh.connect(“gfr4123408”,port = 22,username ='rstrusr',password ='Password')

stdin,stdout,stderr = ssh.exec_command('symcfg -lockbox reset -ssv')

这里要求输入密码,我想在下面写密码

stdin.write( “密码”)

stdin.write( '\ n')

stdin.flush()

输出= stdout.readlines()

打印(输出)
我收到以下错误
回溯(最近一次调用最后一次):文件“”,第1行,在stdin.write('password')文件“C:\ Users \ venkar2 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ paramiko \ file.py“,第402行,写入self._write_all(数据)文件”C:\ Users \ venkar2 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ paramiko \ file.py“,line 519,在_write_all count = self._write(data)文件“C:\ Users \ venkar2 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ paramiko \ channel.py”,第1333行,在_write self中.channel.sendall(data)文件“C:\ Users \ venkar2 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ paramiko \ channel.py”,第831行,在sendall中发送= self.send( s)文件“C:\ Users \ venkar2 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ paramiko \ channel.py”,第785行,发送返回self._send(s,m)文件“ C:\ Users \ venkar2 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ paramiko \ channel.py“,第1169行,在_send中提出socket.error('Socket is closed')OSError:Socket is关闭

我如何解决这个问题,因为我必须配置200个设备?

1 回答

  • 0

    你会发现两件有用的东西:

    • exec_command 采用 get_pty 的可选参数 . 你可以像这样使用它:
    (stdin, stdout, stderr) = ssh.exec_command("sudo ls", get_pty = True)
    
    • 将密码丢入 stdin ,并使用行返回并刷新以确保它已被传递 . 这可以确保它收到密码,如果它要求(你可以做一些更复杂的事情来检查它是否真的被要求......简单地扔掉它总是对我没有造成问题 . )
    stdin.write('passwd' + '\n')
    stdin.flush()
    

    总之,那些应该解决你的问题 .

相关问题