功能
远程连接多台linux服务器,执行命令。
环境
脚本内容
import paramiko
def get_host(ip,name):
transport = paramiko.Transport((ip, 22))
#建立密码连接
#transport.connect(username=name, password="密码")
#免密连接
private_key = paramiko.RSAKey.from_private_key_file('id_rsa') #id_rsa是私钥文件,与脚本放在同级目录下。
transport.connect(username=name, pkey=private_key)
# 创建SSH对象,SSHClient是定义怎么传输命令、怎么交互文件
ssh = paramiko.SSHClient()
ssh._transport = transport
# 执行ifconfig命令,不要执行top之类的在不停的刷新的命令
stdin, stdout, stderr = ssh.exec_command("hostname")
# 获取命令结果
res, err = stdout.read(), stderr.read()
result = res if res else err
print(result.decode())
# 关闭服务器连接
transport.close()
#定义主机ip,用户名
hosts=[
'{"ip":"192.168.1.1","name":"root"}',
'{"ip":"192.168.1.2","name":"centos"}'
]
for i in hosts:
get_host(eval(i)["ip"],eval(i)["name"])