gpt4 book ai didi

linux - 使用 Plink 将批处理文件中的多个参数传递给远程 shell 脚本时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:11 25 4
gpt4 key购买 nike

我正在从 Windows 命令行运行一个 bat 文件,它调用一个 linux 脚本来复制一个文件:

WIN_BATCH.bat内容:

"C:\plink.exe" -ssh User@%1 -pw "pass123" "/u01/./LINUX_COPY_SCRIPT.sh %1"

LINUX_COPY_SCRIPT 内容如下:

sshpass -p "pass123" scp /u01/file_1.txt root@$1:/u01/file_1_Copy.txt

当我从 Win cmd 运行命令时,一切正常,即

Win 命令提示符:

C:\Scripts>WINbatch.bat 11.111.11.11

CMD 中的消息:

C:\Scripts>"C:\plink.exe" -ssh User@11.111.11.11 -pw "pass123" "/u01/./LINUX_COPY_SCRIPT.sh 11.111.11.11"
C:\Scripts>

然后文件从“file_1.txt”复制到“file_1_Copy.txt”

现在问题来了,如果我修改我的脚本如下:

WIN_BATCH.bat内容:

"C:\plink.exe" -ssh User@%1 -pw "pass123" "/u01/./LINUX_COPY_SCRIPT.sh %2"

LINUX_COPY_SCRIPT 内容如下:

sshpass -p "pass123" scp /u01/file_1.txt root@$2:/u01/file_1_Copy.txt

并传递2个参数:

Win 命令提示符:

C:\Scripts>WINbatch.bat 11.111.11.11 11.111.11.11

我遇到错误:

C:\Scripts>"C:\plink.exe" -ssh User@11.111.11.11 -pw "pass123" "/u01/./LINUX_COPY_SCRIPT.sh 11.111.11.11"
ssh: Could not resolve hostname : Name or service not known
lost connection
C:\Scripts>

为什么?如果您看到两种情况下触发的命令相同,因为我传递了相同的参数。

我怎样才能让它工作?传递多个参数的想法是因为我想在后期将文件从一个环境复制到另一个环境。

即一次

C:\Scripts>WINbatch.bat 11.111.11.11 11.111.11.11 

正在工作我会做

C:\Scripts>WINbatch.bat 11.111.11.11 11.111.11.12

其中“11.111.11.11”和“11.111.11.12”是2个系统的ip。

最佳答案

您只将一个参数传递给 LINUX_COPY_SCRIPT.sh:

"C:\plink.exe" -ssh User@%1 -pw "pass123" "/u01/./LINUX_COPY_SCRIPT.sh %2"

但是您正在尝试在 shell 脚本中使用第二个参数 ($2):

sshpass -p "pass123" scp /u01/file_1.txt root@$2:/u01/file_1_Copy.txt

应该是$1:

sshpass -p "pass123" scp /u01/file_1.txt root@$1:/u01/file_1_Copy.txt

关于linux - 使用 Plink 将批处理文件中的多个参数传递给远程 shell 脚本时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51606721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com