gpt4 book ai didi

Python使用Paramiko模块编写脚本进行远程服务器操作

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 33 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python使用Paramiko模块编写脚本进行远程服务器操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

简介: paramiko是python(2.2或更高)的模块,遵循SSH2协议实现了安全(加密和认证)连接远程机器。 安装所需软件包: http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.5.tar.gz http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz 。

?
1
2
3
4
5
6
7
8
tar zxvf pycrypto-2.5. tar .gz
cd pycrypto-2.5
python setup.py build
python setup.py install
tar zxvf paramiko-1.7.7.1. tar .gz
cd paramiko-1.7.7.1
python setup.py build
python setup.py install

脚本简单编写: 管理单台服务器

脚本一:查询172.16.22.23磁盘使用情况 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/python
import paramiko
hostname = "172.16.22.23"
port = 22
username = "root"
password = "larryroot"
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( "df -Th" )
     print stdout.read()
     s.close()

        脚本二:在远程服务器上执行相应命令 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/python
#by larry
#2011/01/30
import sys
import paramiko
 
hostname = sys.argv[ 1 ]
command = " " .join(sys.argv[ 2 :])
port = 22
username = "root"
password = "larryroot"
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()

使用方法:

?
1
2
python single1.py ip地址  命令
[root@localhost ~] # python single1.py 172.16.22.23 df -TH
?
1
2
3
4
5
6
7
8
9
10
11
Filesystem  Type   Size  Used Avail Use% Mounted on
/dev/sda2   ext3   13G  6.0G  5.7G 52% /
/dev/sda1   ext3   104M  12M  87M 13% /boot
tmpfs    tmpfs   61M   0  61M  0% /dev/shm
/dev/sda4   ext3   7.6G  465M  6.8G  7% /data
/dev/sdb1   ext3   32G  5.9G  25G 20% /autocd
[root@localhost ~]# python single1.py 172.16.22.23 free -m
total    used    free   shared  buffers   cached
Mem:      114    112     2     0     26     35
-/+ buffers/cache:     50     64
Swap:     1027     0    1027

脚本三:管理多台服务器:批量查询ip列表中对应服务器的磁盘使用情况 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/python
#by larry
#2011/01/30
import paramiko
port = 22
username = "root"
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()

用法:

?
1
[root@localhost ~] # python ssh.py
?
1
2
3
4
5
6
7
8
9
10
11
12
13
############################ 172.16.22.22 ########################
Filesystem  Type  Size Used Avail Use% Mounted on
/dev/sda2   ext3   12G 5.6G 5.3G 52% /
/dev/sda1   ext3   99M  12M  83M 13% /boot
tmpfs    tmpfs   58M   0  58M  0% /dev/shm
/dev/sda4   ext3  7.1G 443M 6.3G  7% /data
/dev/sdb1   ext3   30G 5.5G  23G 20% /autocd
############################ 172.16.22.23 ########################
Filesystem  Type  Size Used Avail Use% Mounted on
/dev/sda2   ext3   15G 2.6G  11G 19% /
/dev/sda1   ext3   99M  12M  82M 13% /boot
tmpfs    tmpfs   60M   0  60M  0% /dev/shm
/dev/sda4   ext3   33G 377M  31G  2% /data

ip.list文件内容:

?
1
2
dx   172.16.22.22  22  root  larryroot
wt   172.16.22.23  22  root  larryroot

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/python
#by larry
#2011/01/30
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()

  用法

?
1
python ssh .py 命令

简单整理到这里通过python的paramiko模块可以很方便的管理服务器,文件的上传下载后续会整理出来.

SSH 下面是通过ssh的dsa或rsa公钥验证批量登录服务器执行命令:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python
#2012/02/02 by larry
import paramiko
import sys,os
port = 22
username = "larry"
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脚本

?
1
python sshkey.py df -h
?
1
2
3
4
5
6
7
8
################172.16.22.22########################
Filesystem      Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
14G 3.5G 9.7G 27% /
/dev/mapper/VolGroup00-data
116G  47G  64G 43% /data
/dev/cciss/c0d0p1   99M  13M  82M 14% /boot
tmpfs         5.9G   0 5.9G  0% /dev/shm

最后此篇关于Python使用Paramiko模块编写脚本进行远程服务器操作的文章就讲到这里了,如果你想了解更多关于Python使用Paramiko模块编写脚本进行远程服务器操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com