最近我一直在尝试让这个脚本工作:
#!/usr/bin/expect -f
set pssword [lrange $argv 0 0]
spawn su - kod -c cd cod4 -c "nohup kill 7938" > /dev/null 2>&1 &
expect "Password:" { send "$pssword\r" }
expect "# " { send "q" }
exit
它应该以名为“kod”的用户身份登录并通过特定的 pid 终止进程
这是起始脚本,它工作得很好......
#!/usr/bin/expect -f
set pssword [lrange $argv 0 0]
set port [lrange $argv 1 1]
set mod [lrange $argv 2 2]
set map [lrange $argv 3 3]
set num [lrange $argv 4 4]
set hostname [lrange $argv 5 5]
set rcon [lrange $argv 6 6]
set password [lrange $argv 7 7]
spawn su - kod -c cd cod4 -c "nohup ./cod4_lnxded +set s_num=$num +set net_port $port +set dedicated 2 +set fs_game mods/$mod +set sv_punkbuster 1 +set sv_hostname $hostname +set rcon_password $rcon +set g_password $password +set promod_mode match_mr10 +set g_gametype sd +map $map" > /dev/null 2>&1 &
expect "Password:" { send "$pssword\r" }
expect "# " { send "q" }
exit
请不要告诉我“以 root 身份登录”或“只使用 sudo”,因为事实并非如此...... 谢谢!
最佳答案
我认为运行该进程的用户和想要终止它的用户应该在一个公共(public)组中。进程权限也应该与该组相关联。
关于Linux Shell脚本,以另一个用户身份杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7049980/