进口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 回答
你会发现两件有用的东西:
exec_command
采用get_pty
的可选参数 . 你可以像这样使用它:stdin
,并使用行返回并刷新以确保它已被传递 . 这可以确保它收到密码,如果它要求(你可以做一些更复杂的事情来检查它是否真的被要求......简单地扔掉它总是对我没有造成问题 . )总之,那些应该解决你的问题 .