红联Linux门户
Linux帮助

python ssh到linux

发布时间:2016-05-13 15:37:58来源:linux网站作者:justheretobe

问题:使用Python脚本对服务器上的文件进行查询
其中:服务器使用ssh的用户名/密码方式认证;


解决方法:
使用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')


测试结果:

python ssh到linux


对以上脚本修改:
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')

运行结果:

python ssh到linux


至此,登录到linux并显示/ubuntu/home目录下文件的功能实现。
服务器上/ubuntu/home目录下文件为:

python ssh到linux


本文永久更新地址:http://www.linuxdiyf.com/linux/20617.html