Bash:交互式远程提示

Ant*_*ich 18 bash ssh shell-script stdin read

我有一个连接到远程服务器并检查是否安装了某些软件包的脚本:

ssh root@server 'bash -s' < myscript.sh
Run Code Online (Sandbox Code Playgroud)

我的脚本.sh:

OUT=`rpm -qa | grep ntpdate`
if [ "$OUT" != "" ] ; then
    echo "ntpdate already installed"
else
    yum install $1
fi
Run Code Online (Sandbox Code Playgroud)

这个例子可以简化。这是myscript2.sh有同样问题的:

read -p "Package is not installed. Do you want to install it (y/n)?" choise
Run Code Online (Sandbox Code Playgroud)

我的问题是 bash 无法以交互方式阅读我的答案。

有没有办法远程执行本地脚本而不会失去提示用户的能力?

Mat*_*Mat 25

尝试这样的事情:

$ ssh -t yourserver "$(<your_script)"
Run Code Online (Sandbox Code Playgroud)

所述-t的力的tty分配,$(<your_script)读取整个文件,在这种情况下,通过将内容作为一个参数ssh,这将是由远程用户的壳来执行。

如果脚本需要参数,请在脚本之后传递它们:

$ ssh -t yourserver "$(<your_script)" arg1 arg2 ...
Run Code Online (Sandbox Code Playgroud)

对我有用,但不确定它是否通用。

  • 这正是我要找的,谢谢! (3认同)