从python脚本在gnome-terminal中打开选项卡

时间:2018-09-09 09:40:22

标签: python

我想打开不同的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,但我不明白输出:/并不像我会看到“错误”,甚至不执行逐步执行来了解正在发生的事情。

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())