1

こんにちはみんなとギャルの私は問題を抱えています。

続行するにはsudoコマンドを実行する必要があるpythonスクリプトを実行しています。これはコマンドです:

sudo /etc/init.d/test restart

問題は、これをどのように実行しても、sudo と /etc/init.d/test しか実行されず、次のように返されることです。

sudo: /etc/init.d/test: command not found

問題は、コマンドと一緒に再起動が送信されないことです。

これらは私がコマンドを実行しようとした方法です:

os を使用して試行 1

os.system('sudo /etc/init.d/test restart')

サブプロセスを使用して試行2

x = subprocess.Popen(['sudo','/etc/init.d/test','restart'])
x.communicate()

サブプロセスを使用して 3 を再試行します

x = subprocess.Popen(['sudo','/etc/init.d/test restart'])
x.communicate()

これは実際に返されました:

sudo: /etc/init.d/test restart: command not found

システムでコマンドを直接実行すると機能するため、これは意味がありません。
どうすればこれを行うことができるかについてのアイデアはありますか?

4

2 に答える 2

3
#!/usr/bin/env python
import subprocess,getpass
password = getpass.getpass()
#proc = subprocess.Popen(
#  ['sudo','-p','','-S','/etc/init.d/test','restart'],
#   stdin=subprocess.PIPE)
proc = subprocess.Popen(
    ['sudo','-p','','-S','echo','restart'],
    stdin=subprocess.PIPE)
proc.stdin.write(password+'\n')
proc.stdin.close()
proc.wait()
于 2013-04-03T13:15:54.943 に答える