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

时间:2018-06-07 19:45:06

标签: ssh server args

我有很多需要处理的数据,可以访问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}

它仍然在本地而非远程服务器上运行。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

所以第一部分:

#!/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脚本;它始终在本地服务器上运行。