SSH 到远程服务器,带有运行脚本的参数



我有很多数据需要处理,并且可以访问 3 个独立的远程服务器。逻辑是在 3 个不同的服务器之间拆分数据处理,而不是在单个服务器上运行。请注意,所有三个远程服务器都能够指向一个目录,这是我拥有处理所有数据的主脚本的位置。我遇到的问题是当我调用不同的 bash 脚本时,我的论点会延续。

例如,我有一个主脚本,看起来像这样:

processing stuff
more stuff
# call the first script
$scriptdir/step1.csh $date $time $name

在step1.csh中,如果我有一些非常简单的事情,我可以连接到其中一个远程服务器并将主机名输出到文本文件,例如:

#!/bin/bash
ssh name@hostname bash -c '
echo `hostname` > host.txt

我得到了想要的结果,其中"host.txt"将是所需连接主机名的主机名。但是,如果 step1.csh 如下所示:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3
ssh name@hostname bash '
echo `hostname` > host.txt
echo ${mydate} > host.txt

我收到错误消息说"mydate:未定义的变量">

此外,如果我做一些类似的事情:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3
ssh name@hostname "python /path/to/somewhere/to/run/${mydate}/and/${mytime}

它仍然在本地运行,而不是远程服务器。我在这里错过了什么?

所以第一部分:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3
ssh name@hostname bash '
echo `hostname` > host.txt
echo ${mydate} > host.txt

解决方案是:

#!/bin/bash
mydate=$1
mytime=$2
myname=$3
ssh -T name@hostname << EOF
echo `hostname` > host.txt
echo ${mydate} > host.txt
EOF

但是,我仍然遇到问题,例如我尝试在远程服务器上运行python脚本; 它始终在本地服务器上运行。

最新更新