Shell脚本不在远程服务器上执行本地脚本

时间:2013-12-17 22:01:42

标签: bash shell scripting

所以,我正在尝试运行以下两个脚本; mainscript.sh到远程登录并执行attachment.sh但问题是当它执行时我没有使用attach.sh上的选项设置,它只是回显选项列表。我想我对i / o重定向有些不对劲。我是新手,所以任何帮助都非常感激。

mainscript.sh

#!/bin/bash

echo "Please enter ther server name : "
read servername


        ssh $servername "bash -s" < attached.sh

attached.sh

#!/bin/bash
OPTIONS="redhat Uptime logfile quit"
select opt in $OPTIONS; do

function redhat {
        cat /etc/redhat-release
}

function Uptime {
        uptime
}

function logfile {
        cat /var/log/messages | less
}

function quit {
        exit
}
if [ "$opt" = "redhat" ]; then
        redhat
elif [ "$opt" = "Uptime" ]; then
        uptime
elif [ "$opt" = "logfile" ]; then
        logfile
elif [ "$opt" = "quit" ]; then
        quit
else
        clear
        echo "bad option"
fi


done

1 个答案:

答案 0 :(得分:1)

标准输入被重定向为来自脚本文件;脚本将自行读取(并获取EOF,因为shell在运行时已经读过脚本)。

一个有点笨拙但强大的解决方法是将脚本文件scp发送到远程主机,然后执行它。你也可以使用不同的文件描述符,以便保持标准输入连接到终端,但它往往变得棘手。