使用paramiko操控远程服务器执行命令
当我们需要在n多台远程服务器上执行相同的操作时,一台一台挨个去手动登录并执行命令很耗时,而且显得很呆。这时候使用程序自动连接并执行命令是明智之举。这里记录使用paramiko操控远程主机的实践过程
python安装paramiko模块
pip install paramiko
写脚本
import paramiko #导入paramiko模块
# 这里先读取一个远程服务器ip列表
f = open("iplist")
iplist = f.readlines()
f.close()
# 本过程使用公私密钥对进行身份认证,此处是指定ssh私钥位置
pKey = paramiko.RSAKey.from_private_key_file("C://Users//hanqing//.ssh//id_rsa")
for ip in iplist :
ip = ip.strip()
ssh = paramiko.SSHClient()
#load_system_host_keys()是载入用户.ssh目录下的known_hosts文件,如果knowns_hosts文件中没有目标主机的key,程序会抛出异常,连接失败;
ssh.load_system_host_keys()
#ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 如果不方便验证目标主机 host key,可以用这个函数替换ssh.load_system_host_keys()
ssh.connect(hostname=ip, port=22, username="username", pkey=pKey)
stdin, stdout, stderr = ssh.exec_command("cd /home && ls")
outputs = stdout.readlines() #outputs是一个输出结果list
for out in outputs :
print(out)
ssh.close()
以上是一个简单的批量操控远程服务器执行命令的脚本