在shell脚本中使用ssh login在服务器上创建cron条目
我需要将文件(bash脚本)上载到远程服务器。我使用scp命令。将文件复制到远程服务器后,我想在远程服务器上的crontab文件中创建一个cron条目。 但是,文件上传和写入cron条目需要在bash shell脚本中进行,这样我只需要在本地机器上执行脚本,并将脚本复制到远程主机,并将cron条目写入crontab 。在shell脚本中使用ssh login在服务器上创建cron条目
有没有一种方法可以在脚本中使用ssh命令将我登录到远程服务器,打开crontab文件并写入cron条目。
任何帮助是非常欢迎
mailo看起来几乎是正确的,但该命令将是第二个参数的ssh命令,就像这样:
ssh [email protected] 'echo "* * * * * /path/to/script/" >> /etc/crontab'
或者,如果你的系统不会自动加载/ etc/crontab中,你应该能够管crontab命令是这样的:
我想:
- 提取用户与的crontab
- 修改该文件与所需的作业
- 导入新的crontab与
crontab somefile
这是一个魅力!谢谢! – 2017-07-05 12:33:59
说要$local
复制到$remote
上$host
并添加小时工有14过去每隔一小时运行,使用单个SSH会话;
ssh "$host" "cat >'$remote' &&
chmod +x '$remote' &&
(crontab -l;
echo '14 * * * * $remote') | crontab" <"$local"
这显然可以更强大的适当的错误检查等,但希望它至少应该让你开始。
这里的两个键是ssh
命令接受一个任意复杂的shell脚本作为远程命令,并从本地主机获取其标准输入。所有变量都会在本地主机上插入;因此在远程主机上执行的命令将类似于cat >'/path/to/remote' && chmod +x '/path/to/remote' && ...
使用单引号,可以在文件名中留有空格,但是我没有把它们放在crontab
条目中,因为它很奇怪,如果你还需要单引号,我相信它应该可以工作。)
我只是做了这样的事情,我需要创建一个多行的crontab在远程机器上。到目前为止最简单的解决方案是管通过ssh内容到远程crontab命令是这样的:
echo "$CRON_CONTENTS" | ssh [email protected] crontab
回声和重定向到本地创建/ etc/crontab中的SSH登录成功退出后只发生。并不是OP要求的。 – kmarsh 2016-07-14 17:08:00