2016-07-13 11 views
2

システム(Centos)にドライブの共有フォルダをマウントしようとしています。Pythonのpexpectライブラリを使ってrootコマンドを実行するには?

mountコマンドはrootユーザーとして実行する必要があるため、最初にsuコマンドを使用してsudoユーザーとしてログインしています。ログインが成功したら、私は自分のmountコマンドを実行したい。

import pexpect 

cmd1 = "su" 
cmd2 = "mount -t cifs -o username=abc,password=def //101.101.101.214/Volume1 /home/Juna/Drive" 
pwd = "my_password" 
child = pexpect.spawn(cmd1) 
child.expect('Password:') 
child.sendline(pwd) 
child.expect('#') 
child.sendline(cmd2) 

スクリプトから目的の結果が得られません。あなたは、望む結果を得るために、スクリプトで何が必要か、あるいは変更が必要なのかを教えてください。

+1

それは、これを行うユーザーに[ 'NOPASSWD'はsudoアクセス](HTTP与えることは本当に良いでしょう:/を/unix.stackexchange.com/q/18830/45416)を使用して、ルートパスワードをPythonスクリプトに入れてください。そのスクリプトからリークする可能性があります(たとえば、最終的にgithubにプッシュすると)、呼び出しが複雑になります。 – poolie

+1

"私は望みの結果を得ていません"と言っているだけで何が間違っているのかは言わないでください。 – poolie

答えて

0

よりもむしろ対話的にコマンドを送信し、それを実行したいコマンドを与えること-c option to suを使用します。

child = pexpect.spawn(['su', 'root', '-c', cmd2]) 
関連する問題