问题:使用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

Logo

更多推荐