使用python编写一个脚本,读取txt文件中的ip,账号和密码。并行执行下列命令:第一步远程登录linux服务器,第二步下发命令查询cpu型号保存在文件中,第三步,查询该机器IP,把结果存放在另外一个文件中
时间: 2023-06-16 21:03:56 浏览: 171
python源码-案例框架-自动办公-33 Python分块拆分txt文件中的数据.zip
以下是一个可能的实现:
```python
import paramiko
from concurrent.futures import ThreadPoolExecutor
def run_command_on_remote(ip, username, password):
# 远程登录
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port=22, username=username, password=password)
# 查询cpu型号
stdin, stdout, stderr = ssh.exec_command('cat /proc/cpuinfo | grep "model name" | uniq > cpu_info.txt')
stdout.read()
# 查询IP地址
stdin, stdout, stderr = ssh.exec_command('ifconfig | grep "inet " | awk \'{print $2}\' > ip_info.txt')
stdout.read()
ssh.close()
if __name__ == '__main__':
# 读取文件中的ip、账号和密码
hosts = []
with open('hosts.txt', 'r') as f:
for line in f:
ip, username, password = line.strip().split(',')
hosts.append((ip, username, password))
# 并行执行命令
with ThreadPoolExecutor(max_workers=10) as executor:
for host in hosts:
executor.submit(run_command_on_remote, *host)
```
其中,`hosts.txt` 文件中每行包含一个 IP 地址、用户名和密码,以逗号分隔。`ThreadPoolExecutor` 用于并行执行多个远程登录任务,最大并发数量为 10。对于每个主机,`run_command_on_remote` 函数首先使用 `paramiko` 库建立 SSH 连接,然后执行两条命令:查询 CPU 型号并将结果保存到文件 `cpu_info.txt` 中,查询 IP 地址并将结果保存到文件 `ip_info.txt` 中。最后关闭 SSH 连接。
阅读全文