我想打开不同的gnome-terminal选项卡,并通过ssh连接到不同的服务器。为此,我曾经使用一些bash脚本。
#!/bin/sh
hosts=("172.16.1.183" "172.16.1.184")
pass=Password123!
for host in "${hosts[@]}"; do
gnome-terminal --tab -- sshpass -p $pass ssh -o StrictHostKeyChecking=no root@$host
done
由于我想学习它,所以我强迫自己开始使用python编写脚本。这就是为什么我现在尝试使用此python脚本执行此操作。
#!/usr/bin/env python3
import subprocess
for servidor in ['172.16.1.183', '172.16.1.184']:
subprocess.run(['gnome-terminal', '--tab', '--', 'sshpass', '-p', 'Password123!', 'ssh', '-o', 'StrictHostKeyChecking=no', 'root@',servidor])
似乎选项卡确实打开了一秒钟,但随后它们关闭了。由于我不知道如何查看任何日志,因此我很难理解发生了什么。
您能帮我了解发生了什么吗?有什么方法可以使用“详细”选项来运行这些脚本,例如在bash中使用“ -x”,还是例如-v,-vv,-vvv?
非常感谢您!
编辑:我正在使用PYTHONVERBOSE = 1,但我不明白输出:/并不像我会看到“错误”,甚至不执行逐步执行来了解正在发生的事情。
答案 0 :(得分:0)
您将用户名和主机名作为两个列表元素进行传递。相反,它应该只是一个要素。将'root@',servidor
更改为'root@'+servidor
您的代码可以采用以下更好的方式编写
cmd = 'gnome-terminal --tab -- sshpass -p sshpass ssh -o StrictHostKeyChecking=no root@{}'
for servidor in ['172.16.1.183', '172.16.1.184']:
subprocess.run(cmd.format(servidor).split())