我们有一台服务器,它根据一些元素生成两种格式的报告。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