Reputation: 13
When I type the following command in Putty connected to Server A. My file is copied from Server A to Server B.
sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
However, it does not work when I write it in .sh file and executed by a crontab job. My Shell file copyfilefromB.sh is as below:
#!/bin/sh
echo "start"
sshpass -p 'myPass' scp userB@serverB_ip:/file.txt /home/XXXXXX.txt
echo "end"
(I also tired the following, but also not work)
/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
My crontab file is as below:
0 1 * * * /usr/bin/sh /home/copyfilefromB.sh >> copyfilefromB.log
In the log file, I can only read the word "start" and "end", no error is printed, but the copy process is failed.
May I seek help from you guys? Anyone can help? Thank you for your answering.
Upvotes: -1
Views: 185
Reputation: 36
when you first time run ssh or scp on giving host they check ssh public key fingerprints
and ask would you like to accept and store them to ~/.ssh/known_hosts
.
cron runs his tasks as root user, so perhapse there are not stored fingerprints at /root/.ssh/known_hosts
, but it could not ask because does not have a terminal
add option -oStrictHostKeyChecking=accept-new
:
#!/bin/sh
echo "start"
sshpass -p 'myPass' scp -oStrictHostKeyChecking=accept-new userB@serverB_ip:/file.txt /home/XXXXXX.txt
echo "end"
Upvotes: 0
Reputation: 1919
Use this :
0 1 * * * /usr/bin/sh /home/copyfilefromB.sh >> copyfilefromB.log 2>&1
Upvotes: 0