尝试使用SCP使用脚本将多个文件从远程复制到本地

时间:2018-07-28 19:14:52

标签: linux bash scp

因此,我将从一个事实开始,即我是Linux脚本的新手,所以如果我以错误的方式进行操作,请告诉我。
我正在创建一个脚本,用于根据用户输入将日志从许多不同的主机复制到本地计算机上。

我正在编写的功能之一需要使用scp。每次在特定的远程主机上使用scp命令时,都必须输入密码。因此,为节省用户时间,我想复制用户想要的特定主机上可能包含的任何文件。

我知道我可以使用scp user @ Remoteipaddress来做到这一点:'directory / file1 directory / file2'local / machine / directory

我让它运行(我感觉太多了,所以如果有更好的方法让我知道)一堆循环。

scp命令的部分是我的主要问题。如果我引用它并回显它,代码看起来很好。我什至可以复制并粘贴回显的结果,并且可以正常工作,但是如果我让脚本执行该操作,则会收到bash:-c:第0行:在寻找匹配的'''

时出现意外的EOF

编辑:$ app是在程序另一部分中创建的静态数字 添加了一些似乎缺少的东西。我正在尝试从多个程序领域进行整合,而不会使其变得比现在更混乱

#assigns different remote host paths do array variable
until [ $scriptCounter == $app ]
do
    scpScript[$scriptCounter]="user@${ipAddress[$ipCounter]}:'"
    ((++ipCounter))
    ((++scriptCounter))
done

#$app value gets set by another function - typically 3 if that matters
scpCount=0
DayCounter=0
ipScriptCounter=0
until [ $Count == $app ]
do
    ((++scpCount))
    mkdir ~/MyDocuments/Logs/$3/app$scpCount
    echo "Creating ~/MyDocuments/Logs/${3}/app${scpCount}"

#there is one log for each day, $totalDiffDays is the total amount of days
#$DayCounter is set and gets marked up everytime it goes through loop until 
it matches total days
 until [ $DayCounter == $totalDiffDays ]
 do
    scpPath[$DayCounter]="/var/log/docker/theLog*${datePath[$DayCounter]}*"
    noSpaceSCP[$DayCounter]=${scpPath[$DayCounter]//[[:blank:]]/}
    ((++DayCounter))
 done
   fullSCPscript[$scpCount]="${scpScript[$ipScriptCounter]}${noSpaceSCP[*]}'"

   #this portion I have an issue with.
   scp ${fullSCPscript[$scpCount]} ~/MyDocuments/Logs/$3/app$scpCount

   #this ups the array counter for my ipaddress array
   ((++ipScriptCounter)) 

#How im zeroing out the $DayCounter so it will run through again for other 
nodes but with different IP address
until [ $DayCounter == "0" ]
do
    ((--DayCounter))
done
done

当我用scp命令回显行时得到的示例输出

scp user@10.10.200.100:'/var/log/docker/theLog*2018-07-26* /var/log/docker/theLog*2018-07-27*' /home/mobaxterm/MyDocuments/Logs/care3/app1

很抱歉,这看起来很凌乱,但是总的来说,我正在尝试构建从中获取日志的目录,如果有多个工作日,只需添加到scp命令即可。我正在尝试执行此操作,而不是运行一个单独的命令来保存用户(如果他们需要5个文件)不输入5次密码。相反,他们只需要输入一次即可。

0 个答案:

没有答案