Powershell - 运行 SCP 命令使用 CYGWIN 但也扩展变量
Powershell - Run SCP command using CYGWIN but also expand variables
我需要在 运行 执行 SCP
命令之前扩展变量,因此我无法使用单引号。如果我 运行 在 Powershell ISE
中使用双引号的脚本它工作正常。
但如果我通过命令提示符 运行 脚本,则不起作用。
我正在使用 zabbix 来 运行 调用脚本的脚本 [cmd /C "powershell -NoProfile -ExecutionPolicy Bypass -File .\myscript.ps1"]
这是需要使用 Cygwin 运行 SCP 的代码 bash。
if ((test-path "$zipFile"))
{
C:\cygwin\bin\bash.exe -l "set -x; scp /cygdrive/e/logs/$foldername/dir1/$foldername.zip root@10.10.10.10:~/"
}
输出:
/usr/bin/bash: set -x; /cygdrive/e/logs/myfolder/dir1/server.zip root@10.10.10.10:~/: No such file or directory
如果我 运行 在 Cygwin 中手动执行上面的相同命令,它就可以工作。
我什至尝试使用 bash -l -c
但 SSH 会话卡住了,可能是因为根据文档 root@10.10.10.10
变成了 $1。
-c If the -c option is present, then commands are read from
the first non-option argument command_string. If there are
arguments after the command_string, the first argument is
assigned to [=13=] and any remaining arguments are assigned to
the positional parameters. The assignment to [=13=] sets the
name of the shell, which is used in warning and error
messages.
想通了。当使用 bash -c
时,由于 StrictHostKeyChecking
,已知主机的问题(您会收到键入 yes/no 的提示)而停止。我将 -v
开关设置为 SCP
,它向我显示了停止时的调试日志。
必须设置 scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
个选项。
完整的行现在如下所示:
c:$cygwin_folder\bin\bash.exe -c ("/usr/bin/scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -v -i /cygdrive/c/cygwin/home/myuser/.ssh/id_rsa /cygdrive/e/logs/$foldername/dir1/$foldername.zip root@10.10.10.10:~/")
我需要在 运行 执行 SCP
命令之前扩展变量,因此我无法使用单引号。如果我 运行 在 Powershell ISE
中使用双引号的脚本它工作正常。
但如果我通过命令提示符 运行 脚本,则不起作用。
我正在使用 zabbix 来 运行 调用脚本的脚本 [cmd /C "powershell -NoProfile -ExecutionPolicy Bypass -File .\myscript.ps1"]
这是需要使用 Cygwin 运行 SCP 的代码 bash。
if ((test-path "$zipFile"))
{
C:\cygwin\bin\bash.exe -l "set -x; scp /cygdrive/e/logs/$foldername/dir1/$foldername.zip root@10.10.10.10:~/"
}
输出:
/usr/bin/bash: set -x; /cygdrive/e/logs/myfolder/dir1/server.zip root@10.10.10.10:~/: No such file or directory
如果我 运行 在 Cygwin 中手动执行上面的相同命令,它就可以工作。
我什至尝试使用 bash -l -c
但 SSH 会话卡住了,可能是因为根据文档 root@10.10.10.10
变成了 $1。
-c If the -c option is present, then commands are read from
the first non-option argument command_string. If there are
arguments after the command_string, the first argument is
assigned to [=13=] and any remaining arguments are assigned to
the positional parameters. The assignment to [=13=] sets the
name of the shell, which is used in warning and error
messages.
想通了。当使用 bash -c
时,由于 StrictHostKeyChecking
,已知主机的问题(您会收到键入 yes/no 的提示)而停止。我将 -v
开关设置为 SCP
,它向我显示了停止时的调试日志。
必须设置 scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null
个选项。
完整的行现在如下所示:
c:$cygwin_folder\bin\bash.exe -c ("/usr/bin/scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -v -i /cygdrive/c/cygwin/home/myuser/.ssh/id_rsa /cygdrive/e/logs/$foldername/dir1/$foldername.zip root@10.10.10.10:~/")