在python Paramiko ssh上发送回车键

时间:2017-06-05 13:12:01

标签: python ssh

我试图创建一个通过minicom从另一台机器连接到机器的功能。连接到minicom后,应按下输入键,以便将命令发送到由minicom连接的机器。我的python代码如下:

ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(self.serialHost, username=self.username, password=self.password)
shell = ssh.invoke_shell()
shell.send('minicom free -o')
shell.send('\u000d')
ssh.close() 

有人能告诉我如何正确发送回车键吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用'\r\n'作为返回键,但我认为还有一个exec_command方法调用,它不需要返回键。像。的东西。

shell.exec_command('minicom free -o')

source

答案 1 :(得分:0)

通常,当尝试在paramiko中执行命令时,您不必调用shell,只需调用ssh.exec_command(...)即可。如果要执行的命令取决于启动shell将为您提供的环境,则必须显式调用invoke_shell()方法。

当你在paramiko中使用invoke_shell()时,你必须发送特定shell期望的行终止字符。如果您正在使用bash作为默认shell,则必须在每个命令后发送换行符(即'\n')字符。例如:

shell.send('ls\n')

而不是

shell.send('ls')

如果您要连接到较旧的Windows计算机,则需要为要处理的命令发送回车符和换行符(即'\r\n')。