如何实现多行输入服务器名并执行批量ping测试?
修改后的Python Ping脚本实现多行输入主机名
以下是满足需求的修改方案,支持每行输入一个服务器名,并显示待测试主机数量:
import subprocess def ping(): print("请每行输入一个服务器名,输入空行结束输入:") server_names = [] while True: line = input().strip() if not line: break server_names.append(line) # 输出测试数量提示 print(f"您将对{len(server_names)}个客户端执行ping测试") for server in server_names: command = f"ping {server}" # 根据系统调整编码:Windows用gbk,Linux/macOS用utf-8 output = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0].decode('gbk') print(f"\n=== 测试主机:{server} ===") print(output) ping()
关键改动说明:
- 多行输入处理:通过循环读取每行输入,直到用户输入空行终止,解决大量主机名输入的不便
- 空行过滤:用
strip()去除每行首尾空白,空行直接终止输入,避免无效的空主机名测试 - 数量提示:通过
len(server_names)统计主机数量,输出需求中的提示语句 - 输出优化:将subprocess返回的bytes类型结果解码为字符串,避免打印时出现乱码;添加测试主机标识,让输出更清晰
- 补全依赖:添加
import subprocess语句,原脚本遗漏了该导入会导致运行报错
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

