Linux Shell脚本,以另一个用户身份杀死

标签 linux tcl expect bin

最近我一直在尝试让这个脚本工作:

#!/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/

相关文章:

bash - 期待新线

Linux : Setting CLASSPATH inside Linux Script

linux - Rocket.chat 文件上传

c++ - 有没有办法恢复/恢复 nohup 以在控制台中查看输出?

linux - Expect 交互效果很好,但不是来自文件

ssh - 希望脚本带有可选的ssh-agent密码短语提示?

linux - R 我的图表大小在 Linux 上是 Windows 上的两倍

tcl - 如何在 TCL 中创建 RFC 3339 时间戳?

java - 如何用Java Hook 到系统级expect?

perl - 将变量分配给函数