python3 paramiko环境问题解决方案

在使用python运行程序时,使用paramiko的时候会出现环境问题,即要使用的包或者库不在其中的情况,这个原因是因为默认情况下,paramiko在远程主机上执行命令的时候,命令的搜索路径为(/usr/local/bin:/bin:/usr/bin),这样我们安装的软件,如果命令不在这些路径下的话,就会执行错误,报找不到命令的错误;
可以试验一下查看:

    import paramiko
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(hostname=ip,port=port,username=username,password=password)
    preCmd = 'echo $PATH'
    stdin, stdout, stderr = client.exec_command(preCmd)
    print(stdout.read())
此时可以看到打印出来的结果为/usr/local/bin:/bin:/usr/bin

为了解决上述的问题可以采用以下的方式:
preCmd = ‘source /etc/profile; echo $PATH’
此时会将profile文件中配置的环境全部加载到PATH的环境当中,可以解决大多数的问题

另外,paramiko的实现是采用异步的方式执行的,即client.exec_command(cmd)时,会即可执行结束,对之后的结果不会做出回应,因此,如果后面的python代码执行对client.exec_command(cmd)执行有依赖时,可以采用如下的方法:

stdin,stdout,stderr = client.exec_command(cmd)
stdout_result = stdout.readlines()
stderr_result = stderr.readlines()

该方法会在执行结束之后,读取结果,才会执行之后的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值