我正在尝试将 2 个 csv 文件从一个 Pi 发送到另一个 Pi。
我有一个 shell 脚本可以执行此操作,并且在终端中执行时工作得非常好。但是当我在 crontab 中运行脚本时,它不起作用。
我在终端中输入要运行的内容:
bash fileTX.sh
这可以完美地传输到另一个 Pi!!
用于传输文件的 bash 脚本:
#!/bin/bash
password="mypassword"
username="myusername"
ip="111.11.11.11"
while :
do
sshpass -p "$password" scp /home/pi/csv1.csv $username@$ip:/home/pi/Desktop
sshpass -p "$password" scp /home/pi/csv2.csv $username@$ip:/home/pi/Desktop
echo "Files Transmitted!!"
sleep 30
done
再次,在终端中这有效!在 crontab 中它不起作用
在 crontab 中:
@reboot /home/pi/fileTX.sh &
请问有人看到问题出在哪里吗?!
我试过了 使 shell 脚本成为可执行文件,给出所有内容的完整路径,在 crontab 中尝试了一堆前缀变体,例如脚本路径之前的“sh”和“bash”以及“/bin/bash”
请参阅下面我的回答,我是如何解决这个问题的!
您可以尝试将 cron 条目更改为
@reboot /bin/bash /home/pi/fileTX.sh &
只是为了确保您使用的是 bash 来执行。
大家好,我想通了,我希望这可以帮助任何尝试做同样事情的人!
我从 crontab 读取了输出日志,这是一个已知的主机问题。 所以我找到了如何在 shell 脚本中嵌入禁用主机检查。
所以在fileTX.sh中:
#!/bin/bash
password="mypassword"
username="myusername"
ip="111.11.11.11"
while :
do
sshpass -p "$password" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r /home/pi/csv1.csv $username@$ip:/home/pi/Desktop
sshpass -p "$password" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r /home/pi/csv2.csv $username@$ip:/home/pi/Desktop
echo "Files Transmitted!!"
sleep 30
done
在 crontab 中,我做到了
@reboot /bin/bash /home/pi/fileTX.sh &
现在可以了!!高兴吧!!!