Linux
執行切換到使用者的遠端 shell 腳本不會返回到發出本地伺服器的 shell
當我執行這樣的腳本時:
ssh -t root@10.10.10.10 '/tmp/somescript.sh'
其中腳本定義為:
#!/bin/sh mkdir -p /data/workday/cred chown -R myuser:myuser /data su myuser - # <------- NOTICE THIS ! ! ! ! rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm
注意上面的su命令。
如果我註釋掉su命令,腳本會遠端執行,然後我的 shell 提示符返回到我來自的地方(我在上面執行 ssh 命令的同一台伺服器)
但是保留上面列出的腳本會導致腳本成功完成,但shell 提示符仍保留在遠端伺服器上。
我怎樣才能防止這種情況?確保 rpm 命令的發出者是與 root 不同的使用者,只是列出的?
使用 sudo 執行 rpm 命令:
#!/bin/sh mkdir -p /data/workday/cred chown -R myuser:myuser /data sudo -u myuser rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm
su
啟動一個外殼。當您退出該 shell 時,將執行 rpm 命令。如果您要更改使用者以執行 rpm 命令,則su -c 'rpm -Uvp --force --nodeps --prefix /data/place /data/RPMs/myrpm.rpm' myuser