터미널에서 SFTP 다운로드가 제대로 작동하지만 스크립트를 통해서는 작동하지 않습니다.

터미널에서 SFTP 다운로드가 제대로 작동하지만 스크립트를 통해서는 작동하지 않습니다.

변수 장치에 포함된 호스트 이름 fe MikroTik으로 시작하는 모든 백업을 다운로드하는 백업 스크립트를 작성 중입니다. 명령을 터미널에 넣으면 필요한 모든 파일이 다운로드되지만 스크립트에 넣으면 File Mikrotik을 찾을 수 없다는 메시지가 나타납니다.

코드 샘플은 다음과 같습니다.

#!/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* 

출력은 다음과 같습니다.

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

조언 좀 해주실 수 있나요?

아드리안.

답변1

SFTP 대신 scp를 사용하는 것을 고려할 수 있습니다. 원격 호스트의 루트 디렉터리에서 로컬 호스트의 현재 디렉터리로 파일을 복사한다고 가정해 보겠습니다.

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

예를 들어 원격 호스트에 다음 파일을 만들었습니다.

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

내 로컬 호스트에서 다음을 수행할 수 있습니다.

$ 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
$

답변2

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 

ionic 스크립트를 사용할 때:

#!/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* 

출력은 다음과 같습니다

Connecting to device via SFTP and downloading files
Connected to address.
File "/MikroTik" not found.

관련 정보