这是我的脚本:
#!/bin/sh
echo "I'm local"
ssh -t -t remote.server << 'EOF'
sudo echo "I'm remote and sudo"
echo "I'm remote but not sudo"
exit
EOF
这根本不起作用,可能是因为该行echo "I'm not sudo"
是作为密码提供的。
我怎样才能让它工作,没有:
- 将密码直接输入到脚本中
- 启用无密码 sudo,或者
- 让所有东西都使用 sudo 吗?
或者,也许我的方法完全错误或者不适合这个目的?
答案1
我认为唯一的方法是分成两个单独的 ssh 命令:
#!/bin/sh
echo "I'm local"
ssh -t remote.server "sudo echo \"I'm remote and sudo\""
ssh -t remote.server "echo \"I'm remote but not sudo\""
您使用的重定向将始终将整个块重定向到命令,并且不会等待任何子命令成功(或失败)。