2015-09-17 2 views
0

Я пытаюсь запустить сценарий удаленно с помощью ssh и использовать некоторые параметры с удаленного сервера. Сохранялись все параметры в удаленном сервере temp/test/test.prm. Получение сообщения об ошибке «invoke.sh: строка 20:. /temp/test/test.prm: нет такого файла или каталога»Выполнение файла параметров на удаленном сервере unix

См. Ниже пример сценария. Были очень базовые знания в сценарии так плз направить мне

#!/bin/sh 
Param1=$1 
Param2=$2 

ssh [email protected] 

      . ${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) его не бросали нет такого файла или каталога ошибки

+0

Похоже, вы пытаетесь «исправить» свой файл параметров. Но почему? Это сценарий оболочки или что? – Samuel

+0

Или просто общий вопрос, какую часть вашего кода вы собираетесь запускать на удаленном хосте? – deimus

ответ

1

UPDATE

Это неясен и не будет работать!

ssh [email protected] 
      . ${Param1}/Client/scripts/Sample1.prm 

Как уже упоминалось, вы должны использовать формат

ssh [email protected] ". ${Param1}/Client/scripts/Sample1.prm" 

первым.

И во-вторых, что вы ожидаете от следующей команды?

. ${Param1}/Client/scripts/Sample1.prm

Обратите внимание, что существует пространство между . и путем, который является синонимом source. Поэтому также проверьте, имеют ли команды Sample1.prm действительные команды.

Похоже, вы не используете команду ssh shell на удаленном хосте, но только на вашем локальном хосте.

Как именно вы используете команду ssh shell?

Фрагмент кода в вашем примере плохо отформатирован. Общая структура должна выглядеть так, например,

Пожалуйста откорректируйте вам вызова сценария или сделать форматирование в вопросе необходимости.

+0

Мне нужно запустить скрипт на удаленном сервере, но для этого мне нужно передать некоторые параметры. Я пытаюсь вызвать тот же скрипт с локального сервера через другой скрипт. Поэтому в моем локальном скрипте я сначала подключился к удаленному серверу с помощью ssh (я не уверен, правильно ли это, первый раз), а затем я могу прочитать файл параметров, присутствующий на удаленном сервере, а затем использовать некоторые параметры из файл параметров для запуска удаленного сценария). – Sham

+0

oh man! покажите содержание своего скрипта! – deimus

+0

Код в вашем вопросе не имеет ничего общего с тем, что вы хотите сделать. Вы должны использовать следующую структуру для параметров с несколькими командами 'ssh user1 @ server1 'df -H'' – deimus

0

Update:

Если вы хотите, чтобы выполнить свой код на удаленном сервере через SSH, вы можете сделать следующее:

  1. Создать отдельный файл 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 
        } 
    
  2. Тогда вы можете позвонить вам работать удаленно, с помощью источников файл на удаленном сервере:

    ssh [email protected] '. my_script.sh; my_function "/iis/home" "/export/set" "/Client/scripts"'

Вот это :)


Этот код не будет работать:

ssh [email protected] 

      . ${Param1}/Client/scripts/Sample1.prm 

Изменить это так:

ssh [email protected] ". ${Param1}/Client/scripts/Sample1.prm" 
+0

Спасибо, но я хочу выполнить весь код, упомянутый после этой строки только на удаленном сервере (server1). Как мне это сделать? – Sham

+0

@Sham hmm, хорошо, но почему бы не поместить весь ваш код в отдельный файл, а затем вызвать его через ssh, например: 'ssh $ my_server"./ /myscpritp.sh; my_function $ param1 $ param2 "'? – Samuel

+0

вы можете объяснить немного больше. поместить все кодовые средства (весь код, который мне нужно запустить на удаленном сервере?), что вы подразумеваете под my_function. Поскольку я опубликовал код, исходный пост можно сделать из него. Извините, не очень-то задумайтесь о ssh all – Sham

Смежные вопросы