c script de shell não reconhece servidor remoto

0

No AIX eu tenho um scrip, que ssh para o servidor remoto

 #!/bin/sh     

 Usage () {     
    echo "Usage: $0 <config_file>"     
 echo "Example:   ./transfer_dmz_startD.sh /export/data/mbsesb/config/transfer_dmz.cfg"     
    exit     
 }          

if [ $# -lt 1 ]    
then    
    usage    
fi    

config_file=${1}    
NAME='basename $0 .sh'    
LOG=${NAME}.log    
Today='date '+%Y%m%d''    
TARFILE=${NAME}.${Today}    
ZIPFILE=${TARFILE}.gz    
DMZ_USER=aaa    
DMZ_HOST=bbbb
TIMESTAMP='date +%H:%M:%S'    

LOCL_WORKING_DIR='grep "^local" $config_file | cut -d'=' -f2'    
LOGDIR='grep "^log" $config_file | cut -d'=' -f2'    
DESTSERVNAME='grep "^destserver" $config_file | cut -d'=' -f2'    
DAILY_DEST_DIR='grep "^daily" $config_file | cut -d'=' -f2'    
WEEKLY_DEST_DIR='grep "^weekly" $config_file | cut -d'=' -f2'    
MONTH_DEST_DIR='grep "^monthly" $config_file | cut -d'=' -f2'    
LOCLSERVNAME='grep "^loclserver" $config_file | cut -d'=' -f2'    
LOCL_FILES_DIR='grep "^mbsesb" $config_file | cut -d'=' -f2'    
LOGF=${LOGDIR}.${LOG}    

mkdir -p ${LOCL_FILES_DIR}/cool_${Today}    

if [ $? != 0 ]    
then    
    echo "Cannot create ${LOCL_FILES_DIR}/cool_${Today}" >>$LOGF   
    echo "Check each directory permission and rerun the program">>$LOGF    
    echo "$NAME terminated abnormaly">>$LOGF    
     mailx -r [email protected] -s "!!!Please read  a $LOGF and make     appropriate action"    
    exit 1    
fi    



ssh ${DMZ_USER}@{$DMZ_HOST}    

if [ $? != 0 ]    
then    
    echo "Cannot connect to $DMZ_USER server, please check connection and re-run the script again">>$LOGF    
    echo "$NAME terminated abnormaly">>$LOGF    
     echo "$NAME.sh cannot connect to ${DMZ_USER}@{$DMZ_HOST}" | mailx  -r [email protected] -s "!!!Please read  a $LOGF and make appropriate action"    
    exit 1    
fi    

datetime='date +%p'    

if [ ${datetime} -eq "AM" ]    
than    
    ext=Daily    
else    
    ext=EOD    
fi    
cd  $DAILY_DEST_DIR    

tar -cvf $TARFILE.$ext.tar *$Today*.*    

if [ $? != 0 ]    
then    
    echo "$NAME.sh cannot create tar file on $DMZ_USER server" >>$LOGF    
    echo "email is sending to developer" >>$LOGF    
     mailx -r [email protected] -s "!!!Cannot tar the files on     hbrgmfidmzb1. Please check the files on daily directory"    
fi    

gzip  $TARFILE.$ext.tar    

if [ $? != 0 ]    
then
    echo "$NAME.sh cannot create zip file"    
    echo "email is sending to developer"    
     mailx -r [email protected] -s "!!!Cannot tar the files on hbrgmfidmzb1. Please check the files on daily directory"    
fi    

Após este comando, o erro diz:

ssh: Não foi possível resolver o nome do host {Apsswd}: nome do host e nome do serviço não fornecidos ou encontrados. As bandeiras que você deu não fazem sentido, já que você não está enviando e-mails.
SSH_KEY estão configurados, posso conectar-me a esse servidor manualmente, mas o script não está funcionando.
Algum conselho?

    
por osamuyl 06.02.2017 / 21:42

1 resposta

0

Esta é a invocação incorreta do comando ssh . Correto é

ssh user@host

Verifique o manual man ssh .

P.S. ssh não permite passar a senha como um parâmetro. Você precisa usar algum ssh-agent que solicite a senha uma vez para que você precise inserir manualmente e depois fornecerá a senha para ssh automaticamente ou você pode usar outro ajudante de terceiros como sshpass -p 'Password' ssh user@host (não tenho certeza se ele existe no AIX)

Outra maneira de se livrar da senha é usar a autenticação de chave pública, dessa forma você fornece a chave privada (que foi criada sem senha) para ssh as

ssh -i /path/to/private/key user@host

Em csh , as variáveis devem ser atribuídas como

set HOST = "RealRemoteHostName"
set USER = "SomeUser"

use-o no seu script como

ssh $USER@$HOST

P.S.

Acontece que depois que a pergunta foi atualizada, não é uma Shell C ( csh ), mas /bin/sh e problemas de assentos lá

    
por 06.02.2017 / 21:54

Tags