Heim Backend-Entwicklung Python-Tutorial Python使用Paramiko模块编写脚本进行远程服务器操作

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

Jun 10, 2016 pm 03:04 PM
paramiko python

简介:
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

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
Nach dem Login kopieren

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

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

#!/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()
Nach dem Login kopieren


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

#!/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()
Nach dem Login kopieren

使用方法:

python single1.py ip地址  命令
[root@localhost ~]# python single1.py 172.16.22.23 df -TH
Nach dem Login kopieren

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

Nach dem Login kopieren

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

#!/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()
Nach dem Login kopieren

用法:

[root@localhost ~]# python ssh.py
Nach dem Login kopieren

############################ 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
Nach dem Login kopieren

ip.list文件内容:

dx   172.16.22.22  22  root  larryroot
wt   172.16.22.23  22  root  larryroot
Nach dem Login kopieren

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

#!/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()
Nach dem Login kopieren


用法:

python ssh.py 命令
Nach dem Login kopieren

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

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

#!/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()
Nach dem Login kopieren


执行python脚本:

python sshkey.py df -h
Nach dem Login kopieren

################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
Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So laden Sie Deepseek Xiaomi herunter So laden Sie Deepseek Xiaomi herunter Feb 19, 2025 pm 05:27 PM

So laden Sie Deepseek Xiaomi herunter

Was sind die Vor- und Nachteile des Templatings? Was sind die Vor- und Nachteile des Templatings? May 08, 2024 pm 03:51 PM

Was sind die Vor- und Nachteile des Templatings?

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an Jul 01, 2024 am 07:22 AM

Google AI kündigt Gemini 1.5 Pro und Gemma 2 für Entwickler an

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern May 06, 2024 pm 03:52 PM

Für nur 250 US-Dollar zeigt Ihnen der technische Leiter von Hugging Face Schritt für Schritt, wie Sie Llama 3 verfeinern

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen May 06, 2024 pm 02:00 PM

Eine vollständige Anleitung zum Debuggen und Analysieren von Golang-Funktionen

Wie fragst du ihn Deepseek? Wie fragst du ihn Deepseek? Feb 19, 2025 pm 04:42 PM

Wie fragst du ihn Deepseek?

So speichern Sie die Evaluierungsfunktion So speichern Sie die Evaluierungsfunktion May 07, 2024 am 01:09 AM

So speichern Sie die Evaluierungsfunktion

See all articles