我正在尝试使用ssh远程运行脚本,并且需要使用来自远程服务器的一些参数。保留远程服务器位置temp / test / test.prm文件中的所有参数。收到错误说" invoke.sh:第20行:。 /temp/test/test.prm:没有这样的文件或目录"
请参阅下面的示例脚本。在脚本方面有非常基本的知识,所以请指导我
#!/bin/sh
Param1=$1
Param2=$2
ssh usr@Server1
. ${Param1}/Client/scripts/Sample1.prm
cd $prmHome/$prmSetPath
ls | sed '/\.log$/d' > $prmHome/$prmScript/Filelist.txt
cd $prmHome/$prmScript
while read LINE
do
ExportFilName=$LINE
./conversion.sh $prmHome/tmp_export/convert_$Param2.csv $prmHome/$prmSetPath/'$ExportFilName'
done < Filelist.txt
rm -rf $prmHome/$prmScript/Filelist.txt
exit 0
Content of Sample1.prm
prmHome=/iis/home
prmSetPath=/export/set
PrmScript=/Client/scripts
我在使用ssh连接到远程服务器之后尝试了相同的trough命令行,但它正在运行,但是当我尝试通过脚本(invoke.sh)执行相同操作时,它没有抛出这样的文件或目录错误
答案 0 :(得分:1)
<强>更新强>
这个不清楚,不起作用!
ssh usr@Server1
. ${Param1}/Client/scripts/Sample1.prm
如上所述,你应该使用
ssh usr@Server1 ". ${Param1}/Client/scripts/Sample1.prm"
首先格式化。
其次,您希望遵循命令做什么?
. ${Param1}/Client/scripts/Sample1.prm
请注意,.
与路径之间存在空格,该路径是source
的同义词。因此,还要检查Sample1.prm
是否具有有效命令。
看起来您没有在远程主机上运行任何ssh shell命令,而只在本地主机上运行。
你是如何运行ssh shell命令的?
示例中的代码段格式不正确。 一般结构应如下所示。
ssh user1@server1 date
或
ssh user1@server1 'df -H'
请修改您的调用脚本,或使问题中的格式合适。
答案 1 :(得分:0)
<强>更新强>
如果要通过ssh在远程服务器上执行代码,可以执行以下操作:
为要远程运行的代码创建单独的文件upload/server/php/index.php?file=xxxx.png 406 (Not Acceptable)
,并粘贴以下代码:
my_script.sh
然后,您可以通过在远程服务器上获取文件来远程调用您的功能:
#!/bin/bash
function my_function() {
prmHome=$1
prmSetPath=$2
PrmScript=$3
cd $prmHome/$prmSetPath
ls | sed '/\.log$/d' > $prmHome/$prmScript/Filelist.txt
cd $prmHome/$prmScript
while read LINE
do
ExportFilName=$LINE
./conversion.sh $prmHome/tmp_export/convert_$Param2.csv $prmHome/$prmSetPath/'$ExportFilName'
done < Filelist.txt
rm -rf $prmHome/$prmScript/Filelist.txt
exit 0
}
那就是:)
此代码不起作用:
ssh usr@Server1 '. my_script.sh; my_function "/iis/home" "/export/set" "/Client/scripts"'
改变它:
ssh usr@Server1
. ${Param1}/Client/scripts/Sample1.prm