编写一个在ubuntu终端上输入命令的python脚本?

时间:2018-02-06 20:36:53

标签: python ubuntu spyder gnome-terminal os.system

我在ubuntu 16.04上使用spyder。我想写一个脚本,它将在同一个linux终端中执行几个命令。

首先我想打开一个终端,然后ssh到另一台计算机,然后输入我的密码,然后继续输入命令。

我试过os.system(command)但是这不会为我打开一个新终端,也不会运行我想要的命令。

os.system("gnome-terminal -e 'bash -c \"ssh blah blah blah; exec bash\"'")  但是我在尝试输入密码时遇到困难。

如何在此上下文中使用Python脚本输入命令?

3 个答案:

答案 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没有参数)。