首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python,运行终端并在其中执行命令。

Python,运行终端并在其中执行命令。
EN

Stack Overflow用户
提问于 2017-01-21 16:09:50
回答 4查看 4.4K关注 0票数 0

我使用Python2.7.5,因为这个版本安装在我想运行脚本的机器上。

我在Tkinter中创建了一个简单的GUI,带有按钮和文本输入。现在,在一个输入中,我提供了ip或服务器主机名,下一步我读取输入字段的值并将其发送到linux终端,这里有一个问题。

从输入字段读取值(工作良好)

代码语言:javascript
复制
nazwa_ip = self.Input_IP_hostname.get("1.0", 'end-1c')

其次是:

代码语言:javascript
复制
os.system('gnome-terminal --window-with-profile=MY_PROFILE -e "ssh -t user_name@nazwa_ip"')

这就是问题所在,因为它不会将"nazwa_ip“更改为读值。科曼德派往终点站:

代码语言:javascript
复制
ssh -t user_name@nazwa_ip

但我想发送:

代码语言:javascript
复制
ssh -t user_name@ip_adres_from_input_field

有人能帮我解决这个问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-21 17:12:53

根据Python,建议将os.system替换为子流程模块。

代码语言:javascript
复制
status = os.system("mycmd" + " myarg")
# becomes
status = subprocess.call("mycmd" + " myarg", shell=True)
票数 1
EN

Stack Overflow用户

发布于 2017-01-21 16:12:54

字符串格式将在这里工作:

代码语言:javascript
复制
os.system('gnome-terminal --window-with-profile=MY_PROFILE -e "ssh -t user_name@%s"' % nazwa_ip)
票数 0
EN

Stack Overflow用户

发布于 2017-01-21 16:20:20

使用子流程方法可能会更好地做到这一点。

代码语言:javascript
复制
import subprocess

nazwa_ip = self.Input_IP_hostname.get("1.0", 'end-1c')
ssh_param = "ssh -t user_name@{}".format(nazwa_ip)
subprocess.call(['gnome-terminal', '--window-with-profile=MY_PROFILE', '-e',  ssh_param])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41781506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档