[英]executing parameter file in a unix remote server
我正在嘗試使用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連接到遠程服務器后嘗試了相同的低谷命令行,但它仍在工作,但是當我嘗試通過腳本(invoke.sh)進行相同操作時,不會拋出此類文件或目錄錯誤
更新
這還不清楚,將無法正常工作!
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'
請修改您的調用腳本,或適當設置問題中的格式。
更新:
如果要通過ssh在遠程服務器上執行代碼,可以執行以下操作:
為要遠程運行的代碼創建單獨的文件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
像這樣更改它:
ssh usr@Server1 ". ${Param1}/Client/scripts/Sample1.prm"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.