我在ubuntu 16.04上使用spyder。我想写一个脚本,它将在同一个linux终端中执行几个命令。
首先我想打开一个终端,然后ssh到另一台计算机,然后输入我的密码,然后继续输入命令。
我试过os.system(command)
但是这不会为我打开一个新终端,也不会运行我想要的命令。
os.system("gnome-terminal -e 'bash -c \"ssh blah blah blah; exec bash\"'")
但是我在尝试输入密码时遇到困难。
如何在此上下文中使用Python脚本输入命令?
答案 0 :(得分:0)
如果您正在寻找自动连接&使用密码登录到ssh服务器,您可以使用sshpass
输入密码,但最好使用SSH密钥。 Github有一个关于如何生成密钥here的好教程。
如果您想在SSH服务器之后执行命令,可以执行以下操作:os.system("ssh user@host 'command1 && command2'")
答案 1 :(得分:0)
要在终端上执行命令,可以使用python的子进程模块。关于如何使用带有子进程的单个终端执行多个命令,已经存在问题here。
答案 2 :(得分:0)
如果您正在使用Gnome,则可以使用subprocess
模块和gnome-terminal
命令。
这个想法是产生一个GUI终端,并通过-e
选项执行一个脚本。
这是一个非常简单的示例,介绍如何在新终端中执行shell脚本。
myscript.sh
#!/bin/bash
pwd
ls
cat
spawn_and_run.py
import subprocess
subprocess.Popen(["gnome-terminal", "-e", "myscript.sh"])
运行python spawn_and_run.py
将生成一个新终端,打印工作目录(pwd
),打印该目录的内容(ls
),然后回显{{1}的输入(stdin
没有参数)。