如何为多个 linux 设备上的 ssh 和 运行 命令创建 python 脚本
how to create a python script to ssh and run commands on multiple linux devices
我一直在努力寻找一个解释过的 python 脚本来使用 paramiko 通过 ssh ssh 到多个 linux 设备。我找到了一些调整它们并实际工作,但我仍然不明白它是如何工作的。
有人可以用最吸引人的方式解释一个 python 脚本如何通过 ssh 连接到多个 linux 设备和 运行 命令吗?就像你会向一个 6 岁的孩子解释的那样。我的意思是我看到了一些脚本,它们无缘无故地有些复杂。我只想要一个 python 脚本,它导入一个主机名文本和另一个命令文本,并且 运行 向所有 linux 设备和 returns 输出相同的命令。如果有人可以解释这样的脚本是如何工作的,我将不胜感激。
ip = input("Please enter the hostname ")
user = ""
password = ""
print ("creating ssh")
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print("please wait")
ssh_client.connect(hostname=ip, username=user, password=password)
cmd= "uname -r;pwd"
print("please wait")
sdtin,stdout,stderr = ssh_client.exec_command(cmd)
print("success")
stdout = stdout.readlines()
stdout = "".join(stdout)
print (stdout)
我想要这个,但要用于多个设备并从 2 个单独的文件中获取主机名和命令
原来我找到了答案(我想要的完美脚本)
在这里:
import paramiko
import time
p = paramiko.SSHClient()
cred = open("hostnames.csv","r")
for i in cred.readlines():
line=i.strip()
ls =line.split(",")
print(ls[0])
p.set_missing_host_key_policy(paramiko.AutoAddPolicy())
p.connect("%s"%ls[0],port =22, username = "%s"%ls[1], password="%s"%ls[2])
stdin, stdout, stderr = p.exec_command('sudo pwd' , get_pty=True)
stdin.write("%s\n"%ls[2])
stdin.flush()
opt = stdout.readlines()
opt ="".join(opt)
print(opt)
cred.close()
因此,它基本上读取格式为:主机名、用户名、密码的 csv 文件
和 运行s 脚本顺序。此外,它可以 运行 sudo
这样命令 :)
我一直在努力寻找一个解释过的 python 脚本来使用 paramiko 通过 ssh ssh 到多个 linux 设备。我找到了一些调整它们并实际工作,但我仍然不明白它是如何工作的。
有人可以用最吸引人的方式解释一个 python 脚本如何通过 ssh 连接到多个 linux 设备和 运行 命令吗?就像你会向一个 6 岁的孩子解释的那样。我的意思是我看到了一些脚本,它们无缘无故地有些复杂。我只想要一个 python 脚本,它导入一个主机名文本和另一个命令文本,并且 运行 向所有 linux 设备和 returns 输出相同的命令。如果有人可以解释这样的脚本是如何工作的,我将不胜感激。
ip = input("Please enter the hostname ")
user = ""
password = ""
print ("creating ssh")
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
print("please wait")
ssh_client.connect(hostname=ip, username=user, password=password)
cmd= "uname -r;pwd"
print("please wait")
sdtin,stdout,stderr = ssh_client.exec_command(cmd)
print("success")
stdout = stdout.readlines()
stdout = "".join(stdout)
print (stdout)
我想要这个,但要用于多个设备并从 2 个单独的文件中获取主机名和命令
原来我找到了答案(我想要的完美脚本) 在这里:
import paramiko
import time
p = paramiko.SSHClient()
cred = open("hostnames.csv","r")
for i in cred.readlines():
line=i.strip()
ls =line.split(",")
print(ls[0])
p.set_missing_host_key_policy(paramiko.AutoAddPolicy())
p.connect("%s"%ls[0],port =22, username = "%s"%ls[1], password="%s"%ls[2])
stdin, stdout, stderr = p.exec_command('sudo pwd' , get_pty=True)
stdin.write("%s\n"%ls[2])
stdin.flush()
opt = stdout.readlines()
opt ="".join(opt)
print(opt)
cred.close()
因此,它基本上读取格式为:主机名、用户名、密码的 csv 文件
和 运行s 脚本顺序。此外,它可以 运行 sudo
这样命令 :)