script de shell executando no host remoto

0

Eu quero executar testcmd.sh no host remoto (Testhost) usando o seguinte comando:

ssh test@Testhost 'bash -s' < /test/testcmd

Mas recebo o erro abaixo:

!!!!!Running MASTERCMD!!!!!
bash: line 31: /test/PROCESSLIST: No such file or directory

Eu não quero ter o arquivo PROCESSLIST colocado localmente no Testhost. Como posso superar isso?

Cat Testcmd está abaixo:

echo "!!!!!Running MASTERCMD!!!!!"

RC=0
while read proc; do
        if (( 0 == $(ps -ef | grep -v grep | grep -c /test/$proc) )); then
                echo "!!!!! $proc down on  TU  !!!!!"
                RC=1
         else
           echo "!!!!!! $proc is still running on  TU!!!!!"
        fi
#echo "Not checked"

done < /test/PROCESSLIST
    
por canonical 24.08.2015 / 04:53

1 resposta

2

Quando o script /test/testcmd é executado no host remoto, ele precisa de um arquivo /test/PROCESSLIST no host remoto, da mesma forma que ele precisa no host local ( while [...]; do [...]; done < /test/PROCESSLIST ).

É sobre isso que o erro se refere, mas ir além disso o script vai quebrar mesmo quando corrigido isso, pois também precisa de vários arquivos /test/$proc , cujos nomes reais são determinados em tempo de execução com base em /test/PROCESSLIST 's conteúdo ( if [...] grep -c /test/$proc [...]; then [...]; else [...]; fi ).

No final, você precisa copiar sua pasta /test local para o host remoto:

scp -r /test test@Testhost:/test

No entanto, você provavelmente precisará ser root no host remoto para poder copiá-lo para / :

scp -r /test root@Testhost:/test

No entanto, o root pode estar desabilitado / não ter senha configurada no host remoto; Portanto, uma solução alternativa seria copiar a pasta no diretório pessoal de test e copiá-la para / usando sudo :

scp -r /test test@Testhost:~/test
ssh -t test@Testhost sudo mv ~/test /test
    
por kos 24.08.2015 / 07:20