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)
对我有用,但不确定它是否通用。
| 归档时间: |
|
| 查看次数: |
18882 次 |
| 最近记录: |