2013-07-17 81 views
1

我有一臺希望卸載rpm的AIX 6.1服務器。爲什麼我的rpm安裝在遠程播放時掛起

此卸載可直接做在服務器上:

[[email protected]]$ sudo /usr/bin/rpm -e --allmatches _MyRPM-1.0.0 

這卸載工作。

我有一個腳本這空空unstallation:

Uninstall.sh

#!/usr/bin/bash 
set -x 

sudo /usr/bin/rpm -e --allmatches _MyRPM-1.0.0 

我可以在服務器上玩這個腳本沒有任何問題:

[[email protected]]$ cd /where/is/the/script;./Uninstall.sh 
+ sudo /usr/bin/rpm -e --allmatches _MyRPM-1.0.0 
_MyRPM-1.0.0 has been uninstalled successfully 

但是,當我遠程播放此腳本的rpm掛起:

[[email protected]]$ ssh [email protected] "cd /where/is/the/script;./Uninstall.sh" 
+ sudo /usr/bin/rpm -e --allmatches _MyRPM-1.0.0 

而這個命令掛起,我需要殺死它才能結束ssh。

PS:我有完全相同的安裝或卸載方式。

編輯: 問題似乎來自sudo。當我用sudo進行匿名時,掛起問題也會出現。

例如具有新腳本: test.sh

#!/usr/bin/bash 
set -x 

sudo env 
+0

所以你沒有被提示輸入密碼?你運行./uninstall.sh localy時會提示嗎?你是否在兩臺機器上使用相同的用戶ID?他們共享一個常見的.ssh/key文件嗎? (只是猜測)。祝你好運。 – shellter

+0

我沒有被提示輸入密碼,也沒有提示本地或遠程。連接由ssh公鑰完成。 – Pilou

回答

0

須藤通常需要用戶以自己由於終端的方式進行認證,並且如果記得它可以充當經由遠程執行不同被處理。

我沒有系統目前測試這個,但但你可以嘗試SSH的-t或-T開關:

-T  Disable pseudo-tty allocation. 

-t  Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. 
     Multiple -t options force tty allocation, even if ssh has no local tty. 

我懷疑你能得到這個通過增加工作腳本你遠程執行在/ etc/sudoers文件:

{user} ALL=NOPASSWD:/where/is/the/script/Uninstall.sh 

然後嘗試:

"ssh -t [email protected] /where/is/the/script/Uninstall.sh" 

編輯:

發現了一些細節,以幫助解釋爲什麼當遠程執行sudo的行爲是不同的:

http://www.sudo.ws/sudoers.man.html

在sudoers安全策略要求 大多數用戶驗證自己的身份,纔可以使用sudo。A 如果調用用戶爲root用戶,如果目標 用戶與調用用戶相同,或者策略已禁用用戶或命令的 認證,則不需要密碼。

也許它掛起是因爲它試圖驗證,而在本地它不需要這樣做。

+0

我的問題是,我無法改變ssh完成的方式,而奇怪的行爲是一個事實,而不是直接執行的遠程sudo(不是在腳本中)正在工作:'ssh user @ server sudo env'works but' ssh user @ server test.sh'不。 – Pilou

+0

我試過複製,但我沒有訪問具有任何sudo權限的AIX框。我無法在Linux/SUSE上發生這種情況。希望我能幫助更多! –

相關問題