由于项目需要用到在别的主机上执行命令的功能而又没有部署salt之类的管理工具,所以就找到了paramiko,一款使用用户名密码port等SSH到别的主机执行命令的第三方库。
1、安装
pip install paramiko
2、引入
import paramiko
3、使用
示例:
a、建立连接
ssh_fd = paramiko.SSHClient()
ssh_fd.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_fd.connect(host, port=ssh_port, username=username, password=passwd)
注:这里可以指定很多参数,具体可参考官网
b、远程执行命令
stdin, stdout, stderr = ssh_fd.exec_command(cmd, bufsize=-1)
注:这里也是可以加很多的参数的,比如缓冲区大小(默认很小,输出结果长的话就会有问题,这里-1是不限制大小)、命令执行超时时间等,具体参考官网
这里的stdin,stdout,stderr分别对应三个缓冲区:标准输入、标准输出和标准错误,可以通过
res = stdout.read()
这样获取执行结果或者执行异常时的错误信息,这里读取到信息可能是bytes字节型,通常要转换成str才能正常使用
bytes转str方式
out=stdout.read().decode('ascii')
注:这里有两个坑,一个是stdout只能读取一次,后面再read会得到空值;另一个是不同的系统输出可能要使用不同的解码方式,比如utf-8,ascii,gbk等
网友评论