python fabric,遍历 IP 列表以更新服务器

python fabric, Iterate through IP list to update servers

希望对您有所帮助。对面料完全陌生,略知一二python。我正在尝试遍历 IP 的外部文件以更新 40 台奇数远程服务器。

这不起作用,在第一个 IP 后停止。

终端命令: fab -p 密码主机更新

from fabric.api import env, run, sudo


def hosts():
    env.hosts = open('sat_ip_list', 'r').readlines()


def update():
     sudo('apt-get update -y')

我尝试了以下 IP 列表 + Fabric 脚本,没有遇到任何问题 运行 fab -p <password> hosts uname:

# ip_list.txt
192.168.xxx.x
127.0.0.1:xxxx
174.xxx.xxx.xxx:xxxx

# fabfile.py
from fabric.api import env, run, sudo

def hosts():
  # Read ip list from ip_list.txt
  env.hosts = open('ip_list.txt', 'r').readlines()

def uname():
  sudo('uname -a')

您的 sat_ip_list 文件是什么样的 - 每行一个 IP 地址吗?

您是否仅使用极少数主机(例如 2-3 个 IP 地址)尝试过您的脚本?绝对没有理由你不能做你想完成的事情,你的脚本基本上对我有用。

作为完整性检查,您可能想要打印出 env.hosts 的值,如下所示:

def hosts():
  env.hosts = open('sat_ip_list', 'r').readlines()
  print('Hosts:', env.hosts) 

在我的例子中,结果如下:

me@machine:~$ fab hosts
('Hosts:', ['192.168.xxx.x\n', '127.0.0.1:xxxx\n', '174.xxx.xxx.xxx:xxxx\n'])