我有一个嵌入式系统,我可以在其上运行代码。每次我想运行代码时,我都会在两个不同的终端启动两个脚本:“run1.sh”和“run2.sh”。我可以在终端中看到这些脚本的输出(我也希望)。
现在我想创建一个python脚本,在两个不同的终端中启动这两个脚本。我还想看看他们的输出。此外,我想从python脚本插入一个密码到终端,因为脚本在sudo模式下运行。我在supbrocess和PIPES上玩了很多,但我从未同时达到所有上述要求。如何满足这些要求?
我正在使用Ubuntu btw(所以我有gnome终端)
更新:我的问题可能不太清楚,但这必须在python脚本中。这不是为了我的方便,它是整合过程的一部分。脚本的代码将是更大的python程序的一部分,所以问题的重点是如何在python中执行它。
根据您添加的新信息,我创建了一个小的python脚本,它将分别启动两个终端及其输出:
主要脚本:
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
您只需要在以前的代码上实现它。
您可以安装Terminator
并为每个终端配置一个配置文件以运行您想要的任何脚本。
我有一个默认模板,如果你想要加载3个终端并运行3个不同的命令/或脚本:
当我加载该配置文件时,第一个将移动到我的项目目录并列出它们。下一个将运行df -h以查看可用空间和较低的我的ip配置。
这种方式可以节省大量的编程,而且非常简单。
更新:它将运行任何命令,bash,zsh,python等..可用于您的终端。如果脚本位于您的计算机本地:
python <your_script_1> # first terminal profile
python <your_script_2> # second terminal profile
两者都将“同时”执行。
如果您的脚本在目标计算机中是远程的,只需使用ssh创建一个bash脚本,使用私钥连接到远程计算机,然后运行该脚本,两种情况下的结果都是相同的。
编辑:最好的事情是为每个终端设置颜色和透明度,这样你就可以在工作时享受企鹅的自拍。