在 Linux Shell 中使用 scp 和 sshpass 时出现问题

问题描述 投票:0回答:1

当我在连接到服务器 A 的 Putty 中键入以下命令时。 我的文件从服务器 A 复制到服务器 B。

sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt

但是,当我将其写入 .sh 文件并通过 crontab 作业执行时,它不起作用。 我的Shell文件copyfilefromB.sh如下:

#!/bin/sh
echo "start"
sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
echo "end"

(我也累了下面的,但是还不行)

/usr/bin/sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
/usr/bin/sshpass -p 'myPass' /usr/bin/scp userB@serverB_ip:/file.txt /home/XXXXXX.txt

我的crontab文件如下:

0 1 * * * /usr/bin/sh /home/copyfilefromB.sh >> copyfilefromB.log

在日志文件中,我只能读取单词“start”和“end”,没有打印错误, 但复制过程失败。

我可以向你们寻求帮助吗?有人可以帮忙吗? 谢谢您的回答。

linux shell cron scp sshpass
1个回答
0
投票

当您第一次运行 ssh 或 scp 时,它们会检查 ssh 公钥指纹 并询问您是否要将它们存储到

~/.ssh/known_hosts
。 cron 以 root 用户身份运行其任务,因此也许
/root/.ssh/known_hosts

处没有存储指纹

添加到您的脚本选项中

-oStrictHostKeyChecking=accept-new
:

#!/bin/sh
echo "start"
sshpass -p 'myPass' scp -oStrictHostKeyChecking=accept-new userB@serverB_ip:/file.txt /home/XXXXXX.txt
echo "end"
© www.soinside.com 2019 - 2024. All rights reserved.