Necesito hacer un script de Unix, donde necesito las funciones FTP y SFTP. Déjame describir en detalles:
Necesito importar algunos archivos del servidor remoto,ahora estos servidores remotos soportan ftp o SFTP no ambos. Así que necesito una secuencia de comandos donde mi secuencia de comandos intente hacer ftp primero y si tiene éxito, salga de la secuencia de comandos y, si no, intente hacer SFTP en ese servidor.
Probé el siguiente script:
log=/opt/app/vertica/cdr/tmp/hpcom/sftp.txt
LOGINID=abc
HOST=sftp2.xyz.com
echo "starting ftp & sftp...." > $log
ftp -i -n -v $HOST <<-EOFtp >$log
user $LOGINID $PASSWD
bye
EOFtp
rc=$?
if [[ $rc = 0 ]]; then
echo "Successful ftp...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log
else
sftp $LOGINID@$HOST<<EOF > $log
#cd $DIR
#get $FILE
bye
EOF
rc1=$?
if [[ $rc1 != 0 ]]; then
echo "Error occured...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log
else
echo "Successful sftp...$rc" `date "+%Y-%m-%d-%H.%M.%S"` >> $log
fi
fi
En el código anterior, mi secuencia de comandos no funciona como debería ... a continuación se muestra la salida del archivo de registro
"Not connected.
Successful ftp...0 2014-01-30-10.03.06"
Muestra claramente que FTP no está ocurriendo en este host, por lo que idealmente debería intentar hacer SFTP pero no está llegando a la sintaxis de SFTP sino que está saliendo del script ...
Espero haberlo incluido todo, por favor avíseme si necesita más información para ayudar con esto.
Respuestas
1 para la respuesta № 1Debe usar "-eq" en lugar de "=" cuando compare números:
if [[ $rc -eq 0 ]]; then...
if [[ $rc1 -ne 0 ]]; then...