0

我可以在具有交互模式的远程计算机上通过 ssh 运行此处的文档脚本吗?

代码示例是:

ssh -t xijing@ggzshop.com 'bash -s' <<EOF
sudo ls
......Other big scripts......
EOF

double -t 也无法正常工作。

-----------------------------一种可能的解决方案:----------------- --

经过多次尝试,我得出以下答案:

Script=`cat <<'EOF'
sudo ls
.....Big scripts.....
EOF`

ssh -t user@host ${Script}

这将允许用户输入密码。

4

3 回答 3

1

西京的解决方案似乎对我有用。但是,我做了一些外观上的改变。首先,为了便于阅读,我使用“美元括号”而不是反引号。对于另一件事,我不提供任何解释:即使命令是在单独的行上编写的,也需要分号来分隔脚本片段中的多个命令。我的测试:

Script=$( cat <<'HERE'
hostname;
cat /etc/issue;
sudo id
HERE
)

ssh -t user@host ${Script}

sudo 密码会以正常方式询问,无需省略。

于 2013-07-25T19:06:39.810 回答
0

不,我不认为你可以运行这样的交互式脚本。

为了实现您想要的,您可以为常见的管理任务创建专用用户,这些用户可以在sudo没有密码的情况下运行管理命令。接下来,设置 ssh 密钥身份验证以作为专用用户登录并执行必要的任务。

于 2013-02-23T14:49:22.600 回答
0

Script如果有引号,则不必使用分号分隔多个命令。

Script="$( cat <<'HERE'
hostname;
cat /etc/issue;
sudo id
HERE
)"


- ssh -t user@host ${Script}
+ ssh -t user@host "${Script}"

# alternative (not recommended)
# set IFS variable to null string to avoid deletion of newlines \n in unquoted variable expansion
export IFS=''
ssh -t user@host ${Script}
于 2014-02-11T18:14:33.697 回答