感谢支持
我们一直在努力

Python的paramiko模块SSH自动登录Linux系统进行操作

1). Linux系统首先要开启SSH服务:service ssh status

如果没安装的话,则要:apt-get install openssh-server

service ssh restart

2). pip install paramiko

example 1:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(‘192.168.80.139’, username = ‘allen’, password = ‘allen’, timeout = 300)
cmd = ‘cd’
stdin, stdout, stderr = ssh.exec_command(cmd)
cmd = ‘ls Python’
stdin, stdout, stderr = ssh.exec_command(cmd)
print stdout.read()
#for std in stdout.readlines():
#    print std
ssh.close()

如果运行此脚本后“Multibackend cannot be initialized with no backends. If you are seeing this error when trying to use default_backend() please try uninstalling and reinstalling cryptography.” 这个错误,那么就:
pip uninstall paramiko
pip install paramiko==1.17参考:http://stackoverflow.com/questions/37135521/paramiko-transport-throws-runtime-valueerror-while-connecting-to-remote-server-u

脚本二在远程服务器上执行相应命令
import sys
import paramiko
 
hostname = sys.argv[1]
command = ” “.join(sys.argv[2:])
port=22
username=”allen”
password=”allen”
if __name__==”__main__”:
    s=paramiko.SSHClient()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname,port,username,password)
    stdin,stdout,sterr=s.exec_command(command)
    print stdout.read()
    s.close()

脚本三:管理多台服务器:批量查询ip列表中对应服务器的磁盘使用情况
import paramiko
port = 22
username = “allen”
file=open(“ip.list”)
for line in file:
    hostname = str(line.split(“\t”)[1])
    password = str(line.split(“\t”)[4]).strip()
    print “##########################”,hostname,”########################”
    s = paramiko.SSHClient()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname, port, username, password)
    stdin,stdout,sterr = s.exec_command(“df -Th”)
    print stdout.read()
    s.close()
file.close()

ip.list内容:
dx 192.168.0.1 22 root loveyou

脚本四:类似于脚本二,在所有远程服务器上执行相应命令

import paramiko
import sys
port=22
username=”root”
command = ” “.join(sys.argv[1:])
file=open(“ip.list”)
for line in file:
    hostname=str(line.split(“\t”)[1])
    password=str(line.split(“\t”)[4]).strip()
    print “##################”,hostname,”######################”
    s=paramiko.SSHClient()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname,port,username,password)
    stdin,stdout,sterr=s.exec_command(command)
    print stdout.read()
    s.close()
file.close()

下面是通过ssh的dsa或rsa公钥验证批量登录服务器执行命令:
import paramiko
import sys, os
port = 22
username = “root”
key_file = “~/.ssh/authorized_keys”
know_host = “/home/larry/.ssh/known_hosts”
command = ” “.join(sys.argv[1:]) ####获取命令行参数
file = open(“ip.list”)
for line in file:
    hostname = str(line.split(” “)[1]) ####截取ip字段
    print “#####################################”,hostname,”###############################################”
    s = paramiko.SSHClient()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.load_system_host_keys(know_host)
    s.connect(hostname, port, username, key_file)
    stdin, stdout, sterr = s.exec_command(command)
    print stdout.read().strip()
    s.close()
file.close()

零基础如何入门Python http://www.linuxidc.com/Linux/2016-10/136485.htm

Ubuntu 14.04安装Python 3.3.5  http://www.linuxidc.com/Linux/2014-05/101481.htm

CentOS上源码安装Python3.4  http://www.linuxidc.com/Linux/2015-01/111870.htm

Ubuntu 14.04下Python数据处理环境搭建  http://www.linuxidc.com/Linux/2017-01/139568.htm

《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htm

在CentOS 6.5上安装Python2.7  http://www.linuxidc.com/Linux/2016-10/136206.htm

在Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139974.htm

赞(0) 打赏
转载请注明出处:服务器评测 » Python的paramiko模块SSH自动登录Linux系统进行操作
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏