2017-01-21 5 views
0

私はPython 2.7.5を使用しています。このバージョンはスクリプトを実行したいマシンにインストールされています。Python、run terminal、およびexecuteコマンドを

Tkinterでボタンとテキスト入力を使って簡単なGUIを作成しました。 入力の1つで、次のステップで入力フィールドの値を読み取り、Linuxのbashターミナルに送信します。ここに問題があります。

入力フィールドから値を読むこと(良い作品)

nazwa_ip = self.Input_IP_hostname.get("1.0", 'end-1c') 

と次の:それは、読み取り値に "nazwa_ip" を変更文句を言わないので、ここで

os.system('gnome-terminal --window-with-profile=MY_PROFILE -e "ssh -t [email protected]_ip"') 

とは、問題となっています。それCOMANDは端末に送信:

ssh -t [email protected]_ip 

しかし、私は、送信したい:

ssh -t [email protected]_adres_from_input_field 

誰かが問題を解決するために私を助けることができますか?書式設定

+0

はあなたの努力に感謝、なぜあなたはここに 'bash'タグを追加している、それは多くの関連見えません。 – Inian

+1

サブプロセスモジュールを使用してコマンドを実行するとどうなりますか? – fedepad

+0

[Pythonで外部コマンドを呼び出す]の複製があります(http://stackoverflow.com/questions/89228/calling-an-external-command-in-python) –

答えて

0

文字列は、ここに動作します:サブプロセスのメソッドを使用して

os.system('gnome-terminal --window-with-profile=MY_PROFILE -e "ssh -t [email protected]%s"' % nazwa_ip) 
+0

これは文字列_comprehension_ですか?私にはstring _formatting_のように見えます。 – ForceBru

1

Pythonのドキュメントに従って、os.systemをサブプロセスモジュールに置き換えることをお勧めします。

status = os.system("mycmd" + " myarg") 
# becomes 
status = subprocess.call("mycmd" + " myarg", shell=True) 
0

サブプロセスを実行しながら、正確に一つ起動したユーザーは少しトリッカーであるように振る舞うグラフィカルターミナルに1を開始する、簡単です。私のプログラムinterminallink)を使うことができます。これは基本的にStephen Rauchの答えがgnome-terminalで実行されますが、ユーザー環境変数やエイリアスなどがすべて利用可能であるようにシェルを介して実行されますので、sshの実行方法。

あなたは、このようパイソンからそれを使用します。

import subprocess 
subprocess.Popen(['interminal', 'ssh', '-t', '[email protected]{}'.format(ip_address)]) 
関連する問題