python ssh到linux
问题:使用python脚本对服务器上的文件进行查询其中:服务器使用ssh的用户名/密码方式认证;解决方法:1. 使用paramiko模块实现ssh登录部分测试环境:virtualbox+linux mint17python ssh到linuxpython模块paramiko已实现ssh协议,import即可代码实现:import paramikoimport pprint #pre
问题:使用python脚本对服务器上的文件进行查询
其中:
服务器使用ssh的用户名/密码方式认证;
解决方法:
1. 使用paramiko模块实现ssh登录部分
测试环境:virtualbox+linux mint17
python ssh到linux
python模块paramiko已实现ssh协议,import即可
代码实现:
import paramiko
import pprint #pretty print result, not necessary
def ssh2(ip,port,username,passwd,timeout=10):
ssh = paramiko.SSHClient()
ssh.connect(ip,22,username,passwd)
pprint.pprint(stdout.read().decode('utf-8').split('\n'))
ssh2('192.168.56.101',22,'ubuntu','ubuntu')
测试结果:
对以上脚本修改:
1.ssh中添加对unknown host的忽略操作
2.而且ssh登录成功之后需要返回一个结果以判断是否登录到了默认目录,所以ssh2函数添加cmd参数,在登录成功后查看ls的结果
3.增加兼容性,ssh以用户名/密码方式登录,或者以ssh证书方式登录。所以ssh2函数增加key_file做可变参数
修改后代码:
#!/usr/bin/env python3
import paramiko
import pprint
def ssh2(ip,port,username,passwd,timeout=10,cmd='ls',*key_file):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd)
stdin,stdout,stderr = ssh.exec_command(cmd)
pprint.pprint(stdout.read().decode('utf-8').split('\n'))
if __name__ == '__main__':
ssh2('192.168.56.101',22,'ubuntu','ubuntu')
运行结果:
至此,登录到linux并显示/ubuntu/home目录下文件的功能实现。
服务器上/ubuntu/home目录下文件为:
参考:
python ssh:
python模块paramiko与ssh
使用python的paramiko模块实现ssh与scp功能
http://www.361way.com/python-paramiko-ssh/3984.html
更多推荐
所有评论(0)