从python3在两个不同的终端中启动两个shell sudo脚本

时间:2018-09-17 17:45:44

标签: python shell terminal sudo

我有一个嵌入式系统,可以在其中实时运行代码。每次我想运行代码时,我都在两个不同的终端中启动两个脚本:“ run1.sh”和“ run2.sh”。我可以在终端中看到这些脚本的输出(我也希望如此)。

现在,我想制作一个在两个不同终端中启动这两个脚本的python脚本。我想仍然看到他们的输出。我也想从python脚本向终端插入密码,因为脚本以sudo模式运行。我在supprocess和PIPES上玩了很多游戏,但是我从未同时达到上述所有要求。如何满足这些要求?

我正在使用Ubuntu btw(所以我有gnome终端)

更新:我可能不清楚我的问题,但这必须在python脚本中。这不是为了我的方便,而是集成过程的一部分。该脚本的代码将是一个较大的python程序的一部分,因此问题的全部重点是如何在python中进行操作。

2 个答案:

答案 0 :(得分:1)

根据您添加的新信息,我创建了一个小的python脚本,它将分别启动两个终端及其输出:

enter image description here

主脚本:

mortiz@florida:~/Documents/projects/python/split_python_execution$ cat split_pythonstuff.py 
#!/usr/bin/python3
import subprocess

subprocess.call(['gnome-terminal', '-x', 'python', '/home/mortiz/Documents/projects/python/split_python_execution/script1.py'])
subprocess.call(['gnome-terminal', '-x', 'python', '/home/mortiz/Documents/projects/python/split_python_execution/script2.py'])

脚本1:

mortiz@florida:~/Documents/projects/python/split_python_execution$ cat script1.py 
#!/usr/bin/python3

while True :
   print ('script 1')

脚本2:

mortiz@florida:~/Documents/projects/python/split_python_execution$ cat script2.py 
#!/usr/bin/python3

while True:

    print ('script 2')

我想您可以从这里开发任何您想要的东西。

  

更新:关于sudo

Sudoers是控制特定用户是否提供密码可以执行哪些操作的好方法。

如果将此行添加到/ etc / sudoers中,则在将sudo传递给命令时不需要密码:

<YOUR_USER> ALL = NOPASSWD : /usr/bin/python <SCRIPT.py>

据您所知,您的密码已存储在脚本中。不需要这样做,这是一个坏习惯。 Sudoers是更好的方法。

无论如何,如果您想以一种不安全的方式进行操作,请refer to this question并将其放在此答案提供的脚本中的命令之前。

链接提供的作品:

echo -e "mypassword\n" | sudo -S python test.py
15

您只需要在前面的代码中实现它即可。

答案 1 :(得分:0)

您可以安装Terminator并为每个终端配置一个配置文件以运行所需的任何脚本。

我有一个默认模板,如果需要,它将加载3个终端并运行3个不同的命令/或脚本:

enter image description here

当我加载该配置文件时,第一个配置文件会将我移到我的项目目录并列出它们。下一个将运行df -h来查看可用空间并降低我的ip配置。

这样可以节省大量编程时间,而且非常简单。

  

更新:它将运行可用于您的终端的任何命令,bash,zsh,python等。如果脚本在您的计算机本地:

python <your_script_1> # first terminal profile
python <your_script_2> # second terminal profile

两者都将“同时”执行。

如果您的脚本在目标计算机中是远程的,只需使用ssh创建bash脚本以使用私钥连接到远程计算机,然后运行该脚本,在两种情况下结果都是相同的。

编辑:最好的事情是为每个终端设置颜色和透明度,这样您就可以在工作时欣赏企鹅的自拍照。