如何在Solar Putty中执行含sudo及后续服务器脚本的认证后脚本?
需求可行,调整脚本逻辑即可解决问题
你的需求完全可以实现,当前无响应的核心原因是:sudo -iu flanger会启动一个新的交互式登录shell,原脚本里后续的命令不会自动进入这个新shell的执行上下文——原脚本在启动新shell后就结束了,新shell只是停在交互式状态,没收到要执行的脚本指令。
解决方法
方法1:用Here-Doc传递后续命令
把要执行的服务器脚本写在EOF标记之间,让sudo -iu flanger启动的新shell直接读取并执行这些命令:
sudo -iu flanger << EOF # 替换成你的服务器脚本实际路径 /home/flanger/scripts/your-target-script.sh EOF
这种方式会完整加载flanger用户的登录环境(比如.bashrc/.profile里的配置),和手动切换用户后执行脚本的效果完全一致。
方法2:通过管道传递单条命令
如果仅需执行单条脚本命令,也可以用管道直接把指令传给新shell:
echo "/home/flanger/scripts/your-target-script.sh" | sudo -iu flanger
方法3:直接指定用户执行脚本(无需登录环境时用)
如果你的目标脚本不依赖flanger用户的登录环境变量,还可以简化成:
sudo -u flanger /home/flanger/scripts/your-target-script.sh
这种方式不会启动交互式shell,直接以flanger用户身份执行脚本,执行效率更高。
补充说明
之前你需要在sudo -iu flanger前加换行才能运行,是因为Solar Putty的脚本执行逻辑在模拟交互式输入,换行相当于触发命令执行;但后续命令必须嵌套到新shell的执行流程里,才能被正确识别并运行。
内容的提问来源于stack exchange,提问作者Michael Rodgers
相关产品推荐
相关产品推荐

