crontab中使用ssh的问题

lanowen 2012-06-25 10:40:13
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

需求:定期在多台机器上面执行shell操作(以/sbin/ifconfig这个命令为例子)。
我的作法:
设置crontab
*/1 * * * * . /etc/profile; . ~/.bash_profile; . ~/.bashrc; . /etc/bashrc; /usr/bin/perl /home/Keithlan/test/a/env.pl >>/home/Keithlan/test/a/my_log.txt

/home/Keithlan/test/a/env.pl 内容为:
#!/usr/bin/perl -w
print `/usr/bin/ssh 10.10.2.xx '/sbin/ifconfig'`;

远程的机器key文件都已经设置正确。不需要交互式登录。
注:这个脚本手动执行没有问题,但是放在crontab中就不能成功。


经过几次测试发现,crontab中的环境变量与我手动执行的环境变量不一样。如:
[Keithlan@dbbak10-001 a]$ env | grep SSH
SSH_CLIENT=192.168.200.25 49201 22
SSH_TTY=/dev/pts/1
SSH_AUTH_SOCK=/tmp/ssh-ETFTvz3773/agent.3773
SSH_CONNECTION=192.168.200.25 49201 10.10.8.35 22
PROMPT_COMMAND={ msg=$(history 1 | { read x y; echo $y; }); logger -p local5.info "$HOSTNAME [HIST] : $SSH_CLIENT : $PWD : $msg"; }


但是在crontab中没有这些变量。

请问大家是如何解决的?







...全文
316 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdqd2012 2012-07-11
  • 打赏
  • 举报
回复
perl, 不是太清楚,不过感觉用bash shell写还是很清楚的,
如果是因为没有变量的问题,可以这样执行:
#!/bin/bash
export SSH_CLIENT=xxxx
其他的变量请自行添加
/usr/bin/ssh 10.10.2.xx '/sbin/ifconfig'` ;;这个命令可能你还需要处理一下,如加入参数-f 等

这样的话在crontab里面也不用执行. ~/.bashrc 等了
justkk 2012-06-25
  • 打赏
  • 举报
回复
要不要执行一下 . ~/.profile

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧