2017-02-27 25 views
1

我的perl腳本應該能夠在執行期間將普通帳戶更改爲root帳戶,然後繼續執行其餘命令。但我不知道該怎麼辦:在Linux中,如何將用戶更改爲perl中的root並繼續運行此腳本?如何在perl中導出代理?

  1. 更改爲root帳戶,並能夠自動通過身份驗證,我使用下面的代碼,但失敗了。

    system "echo \"$password\" | sudo -S su root"; 
    
  2. 能夠繼續完成剩下的scriptsI使用腳本時更改帳戶中(只是一味系統「命令蘇」),它是不能執行其他腳本

  3. 我需要出口代理,但是當我使用下面的代碼,它不工作:

    system "export http_proxy=http://proxy.companyname.com:8080"; 
    
+0

的[運行Linux系統命令作爲超級用戶,使用Python腳本]可能的複製(http://stackoverflow.com/questions/583216/run-a-linux-system-command-as-a -superuser-using-a-python-script)或者[如何運行需要root權限的perl腳本?](https://stackoverflow.com/questions/16178015/how-can-i-run-a-perl- script-which-needs-root?rq = 1) – ray

+0

謝謝,但有點不同。我應該使用perl腳本將帳戶更改爲root並導出代理,並且不能更改配置文件/配置文件或使用「sudo命令」。 –

+0

最近版本的'sudo'可以通過傳遞'-S'來讀取'stdin'的密碼。詳細信息請閱讀[手冊頁](https://www.sudo.ws/man/1.8.18/sudo.man.html)! – salva

回答

0

也許嘗試反引號?

my $sudo = `echo \"$password\" | sudo -S su root`; 

也出口類似。

my $exp = `export http_proxy=http://proxy.companyname.com:8080`; 
+0

謝謝,但我認爲系統的功能「」;與反引號幾乎相同?我其實不想得到上述命令的輸出,我只希望這兩個命令可以執行。 –

1

如果您需要執行其他腳本以root執行,並且您已經安裝了SSH的Perl模塊,那麼你可以打開一個SSH會話以root用戶的本地主機並從那裏開始執行腳本。

my $ssh = Net::SSH::Perl->new("host1"); 
$ssh->login("root", "pass1"); 
$ssh->cmd("sh /opt/..."); 
+0

感謝您的回覆,但我無法安裝Net :: SSH :: Perl。 –

相關問題