Может ли PSCP получить файл с нескольких серверов, используя массив ip и looping? - PullRequest
0 голосов
/ 02 марта 2020

Я получаю более одного удаленного источника, не поддерживается ошибка на PSCP, если мой сценарий написан так (без проблем с plink):

Я хочу получить файлы с нескольких серверов UNIX на локальный windows Может ли кто-нибудь помочь мне проверить мой код?


#Server Information:
$Server_IP=@("root@192.168.13.10","root@192.168.13.11")

$PPK_Path="C:\Users\me\Desktop\private-key.ppk"

#Local machine related information
$Dest_Path=@("C:\Users\me\Desktop\savehere01\","C:\Users\me\Desktop\savehere02\")


#Commands //Change with cautious

For ($i=0; $i -le 2; $i++) {

#Prompt computer to start plink.exe to insert private key and enable ssh
Echo "n" | plink -ssh -i $PPK_Path $Server_IP[$i]

#Prompt Powershell to run scp
pscp -r $Server_IP[$i]:/cf/conf/backup/* $Dest_Path[$i]

}

Однако, если я запускаю свой скрипт, как показано ниже, я могу получить файлы с нескольких серверов на один локальный хост.

Echo "y" | plink -ssh -i C:\Users\me\Desktop\private-key.ppk root@192.168.13.32
pscp -pw testing -r root@192.168.13.10:/cf/conf/backup/* C:\Users\me\Desktop\savehere\

Echo "y" | plink -ssh -i C:\Users\me\Desktop\private-key.ppk root@192.168.13.11
pscp -pw testing -r root@192.168.13.11:/cf/conf/backup/* C:\Users\me\Desktop\savehere02\

РЕДАКТИРОВАТЬ


foreach ($IP in $Server_IP){

#Prompt computer to start plink.exe to insert private key and enable ssh
Echo "y" | plink -ssh -i $PPK_Path $IP

#Prompt Powershell to run pscp
pscp -pw testing -r $IP":"/cf/conf/backup/* C:\Users\me\Desktop\savehere\

}

1 Ответ

0 голосов
/ 02 марта 2020

Я нашел несколько ошибок в вашем коде: 1) Поместите эту строку

$Server_Username[$i]+"@"+$Server_IP[$i]   

вместо

${Server_Username[$i]}@${Server_IP[$i]}

2) У вас есть только 2 элемента в массиве, ваш l oop должен быть

($i=0; $i -lt 2; $i++) 

3) Вы можете использовать только эту конструкцию

$Dest_Path[$i]

вместо

${Dest_Path[$i]}

Дополнительно:

#Commands //Change with cautious

For ($i=0; $i -lt 2; $i++) {

#Prompt computer to start plink.exe to insert private key and enable ssh
Echo "n" | plink -ssh -i $PPK_Path $Server_IP[$i]

#Prompt Powershell to run scp
pscp -r $Server_IP[$i]:/cf/conf/backup/* $Dest_Path[$i]

}

Попробуйте это исправить

...