O download SFTP do terminal é bom, via script não funciona

0

Estou escrevendo um script de backup que baixará todos os backups começando com hostname f.e MikroTik que está contido no dispositivo variável. Quando eu coloco o comando no terminal ele vai baixar todos os arquivos que eu preciso, mas quando eu coloco o script tot, então ele me mostra o arquivo da mensagem Mikrotik não encontrado.

Aqui está o exemplo de código:

#!/bin/bash
user="admin"
address="IP"
#command will get devcie hostname in complex form 
ssh $user@$address '/system identity print interval=' > devices

#will get device hostname
tmpDevices=$(cat devices)

device=$(echo $tmpDevices | awk ' {print $2} ')
echo "Device hostname is $device"

echo "Connecting to device via SFTP and downloading files"
#sftp "${user}@${address}:/${device}*"
sftp $user@$address:$device* 

Aqui está a saída:

Device hostname is MikroTik
MikroTik
Connecting to device via SFTP and downloading files
Connected to 10.120.0.253.
File "/MikroTik" not found.

Você pode, por favor, me aconselhar.

Adrian.

    
por Adrian Bardossy 07.12.2017 / 16:10

2 respostas

1

Você pode considerar usar o scp em vez do sftp. Supondo que você queira copiar arquivos do diretório raiz no host remoto para o diretório atual no host local:

scp "${user}@${address}:/${device}*" . 

Por exemplo, criei os seguintes arquivos em um host remoto:

$ ssh user@remoteHost "ls /MikroTik*"
/MikroTik_dec07backup.backup
/MikroTik_dec07export.rsc
/MikroTik_dec07log.txt

Do meu host local, posso fazer:

$ mkdir /tmp/example
$ cd /tmp/example
$ scp "user@remoteHost:/MikroTik*" .
MikroTik_dec07backup.backup                   100%    0     0.0KB/s   00:00
MikroTik_dec07export.rsc                      100%    0     0.0KB/s   00:00
MikroTik_dec07log.txt                         100%    0     0.0KB/s   00:00
$ ls
MikroTik_dec07backup.backup  MikroTik_dec07export.rsc  MikroTik_dec07log.txt
$
    
por 07.12.2017 / 16:23
-1
adrian@adrian-ThinkPad-X230:~/Desktop/zaloha$ sftp admin@IP:/MikroTik*
Connected to IP.
Fetching /MikroTik_dec07backup.backup to MikroTik_dec07backup.backup
/MikroTik_dec07backup.backup                                                                                                                                                  100%   10KB  10.5KB/s   00:00    
Fetching /MikroTik_dec07export.rsc to MikroTik_dec07export.rsc
/MikroTik_dec07export.rsc                                                                                                                                                     100%  329     0.3KB/s   00:00    
Fetching /MikroTik_dec07log.txt to MikroTik_dec07log.txt
/MikroTik_dec07log.txt                                                                                                                                                        100%   75KB  75.1KB/s   00:00 

Quando eu uso o script iônico como:

#!/bin/bash
user="admin"
address="IP"
#command will get devcie hostname in complex form 
ssh $user@$address '/system identity print interval=' > devices

#will get device hostname
tmpDevices=$(cat devices)

device=$(echo $tmpDevices | awk ' {print $2} ')
echo "Device hostname is $device"

echo "Connecting to device via SFTP and downloading files"
#sftp "${user}@${address}:/${device}*"
sftp $user@$address:$device* 

A saída é:

Connecting to device via SFTP and downloading files
Connected to address.
File "/MikroTik" not found.
    
por 07.12.2017 / 17:05