python ssh登录执行linux_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 reinstallingcryptography." 这个错误,那么就:

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值