2017-02-15 10 views
1

私はubuntuで自分のpythonを実行していて、シェルと通信するスクリプトを作ろうとしています。私のスクリプトはシンプルですPythonからシェルに入力する方法は?

スクリプトを実行してxyzにログインしようとすると、シェルでパスワードを尋ねられます。しかし、私はどのようにパスワードをPythonスクリプトを介して送信し、ログインするだけですか?これを行うより良い方法はありますか?

+0

パスワードだけを含む別のコマンドを実行するとどうなりますか?あるいは、 'xyz'の後に改行を入れてから、パスワードを入力してください。 – Carcigenicate

答えて

0

パスワードをコマンドライン文字列にパイプしてみることができます。

注:これは非常に安全です。誰でもあなたのパスワードを知っているあなたのpythonスクリプトにアクセスし、あなたのシステムを保持することができます。

import os 
password = 'ABCDEFG' 
os.system('echo {} | sudo -S su - xyz'.format(password)) 

EDIT:注echoを追加し、あなたはどのコマンドの入力にそれを持っていないように、それは標準入力にハードコードされたパスワードをパイピングパイプから

+0

それは動作しません。それはちょうどコマンドとしてあなたのパスワードを実行し、それを次のパイプに通すでしょう。 – faviouz

+1

うまくいきません – Yogi

+0

訂正のため編集を参照してください – yuval

1

をパスワードを受け入れることができるように、sudoに-S sudoerの特権がある必要がありますそれはoversecinkingそれ(非常に不安に加えて)。

あなたのルートがPythonスクリプトの中にあると仮定します(つまり、sudoでコマンドを実行しないでください)。

import os 
os.system('su - xyz') 

次に、sudoでPythonスクリプトを起動します。

$ sudo python foo.py 

奇妙な要件がない限り、これは最も自然な方法です。

+1

私はスクリプトを実行するときに端末からのパスワードで依頼されます。私はrootとしてスクリプトを実行しません。 – Yogi

+0

はい、もちろんです。しかし、スクリプトを起動するときに一度だけパスワードを入力するのと、スクリプトでハードコードを入力することの違いは何ですか?それは本当に安全ではないだけでなく、パスワードが変更されてもスケールされません(スクリプトを編集する必要があります)。それはちょうどあなたが求めている非常に奇妙なことです。しかし、おそらく私はあなたが持っているいくつかの要件が不足している。 :) – faviouz

関連する問題