通过 SSH 将文件从 Linux 服务器复制到 Windows 机器,使用 expect 脚本和 crontab 并不可靠

通过 SSH 将文件从 Linux 服务器复制到 Windows 机器,使用 expect 脚本和 crontab 并不可靠

我们有一台服务器,它根据一些元素生成两种格式的报告。PDF 和 DOCX。我创建了一个 crontab 作业来自动将这些文件从服务器传输到本地 Windows 工作站之一。

我在 Windows 机器上安装了 SSH 服务器,并创建了一个 expect 脚本,因为 Windows 用户有密码,简单的 SCP 脚本不起作用。我在网上找到了一个解决方案(使用 expect 脚本)。这种安排有点管用。但它并不总是有效,当它起作用时,脚本只会复制 PDF 文件或只复制 DOCX 文件,或者它不会从某个元素复制两个文件。

我不知道从哪里开始调试这样的问题。

有趣的是,如果我在终端中运行 SCP 命令(从脚本),它会复制所有内容。

scp -r -p /home/kns_ftp/MPS_report/ [email protected]:C:/Users/mnadmin/desktop/

ps:出于基本的安全考虑,我已经更改了“xxx”中的某些值。

根目录下的脚本位置 (kopiranje_batt.exp):

\[root@kns-db \~\]# ll

\-rwxr-xr-x  1 root root   196 Jan 13  2023 kopiranje_batt.exp

期望脚本:

\[root@kns-db \~\]# cat kopiranje_batt.exp
#!/usr/bin/kopiranje_batt

spawn scp -r -p /home/kns_ftp/MPS_report/ [email protected]:C:/Users/mnadmin/desktop/
set pass "xxx"
expect {
password: {send "$pass\\r"; exp_continue}
}

计划任务:

\[root@kns-db \~\]# crontab -l
0 05,09,10,18,20,22 \* \* \* expect /root/kopiranje_batt.exp

来自 Windows WINSCP 的示例:

从图中可以看出,某些元素仅复制了 DOCX,而其他元素仅复制了 PDF

在此处输入图片描述

相关内容