변수 장치에 포함된 호스트 이름 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.