在Python 的 paramiko 模块中,可以通过 exec_command 方法的 bufsize 参数来设置缓冲区大小。 exec_command 方法的签名如下: python exec_command(command, bufsize=-1, timeout=None, get_pty=False, environment=None) command:要执行的远程命令。
我试图在Paramikoexec_command的帮助下,在Unix服务器上运行exec_command命令。然而,当我运行这个命令exec_command('sesu test')时,我将 importparamikousername 浏览0提问于2019-03-29得票数6 回答已采纳 1回答 通过sshClient的get_pty()有时会与paramiko一起永远挂起 、、、 不幸的是,它们中似乎很少有间歇性的...
最近一直在用python的paramiko执行远程命令,发现如果直接写的话在每条命令后加分号执行时会报错,如果不加分号,分一条命令一条命令地执行,起不到作用,如切换路径等,后面在网上找到了相关的方法,只要在exec_command(cmd,get_pty=True)在命令语句后加get_pty=True即可。代码如下: 1 2 3 4 5 6 7 8 9 10 11 ...
简单的代码如下: _, stdout, stderr = self.ssh.exec_command(cmd, get_pty=True)whileTrue: v= stdout.channel.recv(1024)ifnotv:breakprint(str(v)) time.sleep(3) 每隔3秒会去读取一次标准输出的内容
session.get_pty()#从服务器请求一个伪终端。 这通常在创建客户端通道后立即使用 session.exec_command('sudo -l') stdin = session.makefile('wb',-1)stdout = session.makefile('rb',-1)stdin.write(password+'\n')stdin.flush()print(stdout.read().decode('utf-8'))session.close()self.ssh_...
命令执行时间过长:如果执行的命令需要很长时间才能完成,可能会导致Paramiko在等待输出时超时。可以尝试增加超时时间,或者使用Paramiko的exec_command()方法的get_pty参数来创建一个伪终端,以避免超时问题。 总之,当遇到Paramiko ssh输出未按预期获得输出的问题时,需要仔细检查命令本身、终端窗口大小、输出是否被重定向以及...
exec_command(cmd,get_pty=True,timeout=timeout) # 执行命令 out = stdout.readlines() # 执行结果,readlines会返回列表 # 执行状态,0表示成功,1表示失败 channel = stdout.channel status = channel.recv_exit_status() ssh.close() # 关闭ssh连接 # 修改返回结果 result['status'] = status result['...
command就是发送完指令,连接就会断开。invoke_shell则是长连接,保持状态。 exec_command() 操作 import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect( hostname='127.1.1.12', port=22, ...
exec_command invoke_shell exec_command 只能运行一次,命令执行完成后channel将关闭,不能被复用。 invoke_shell 使用get_pty()获取一个伪终端后,需要使用invoke_shell()激活这个伪终端,激活成功后在伪终端中就可以向操作本机一样操作远程主机即所谓的交互式shell。当退出伪终端后,chan...
importparamiko# 建立一个sockettrans = paramiko.Transport(('127.0.1.66',22))# 启动一个客户端trans.start_client()# 如果使用用户名和密码登录trans.auth_password(username='root', password='aa***')# 打开一个通道channel = trans.open_session()# 获取终端channel.get_pty()# 激活终端,这样就可以登录...