3月 30

shell 中使用 ssh 连接

【整理人:张子萌 2010-03】

ssh服务是不能用非交互的方式传递密码
下载地址:
http://sourceforge.net/projects/sshpass/

具体安装步骤如下:
# wget http://downloads.sourceforge.net/project/sshpass/sshpass/1.04/sshpass-1.04.tar.gz?use_mirror=cdnetworks-kr-1
# tar zxvf sshpass-1.04.tar.gz
# cd sshpass-1.04
# ./configure
# make && make install

sshpass为C编写的一个小程序使用比较简单,用法如下

sshpass -p 密码 ssh 用户名@目标IP 要执行的命令

此处密码为明文。sshpass也可以使用密码文件。具体可以通过‘sshpass -h’看看帮助。

对于密码安全问题,如使用密码文件可以将文件权限修改为600。如果直接写在shell中,可以使用加密脚本的

工具,缺点是每次修改都要编译脚本。

3月 23

脚本放入crontab不能运行

【整理:张子萌】

linux下编写shell脚本,手动运行正常,但是放到crontab中,就不能正常运行了,这是环境变量的问题。即使使用同一个账户,手动登陆和crontab自动运行所加载的环境变量也是不同的。

有两种方法可以解决:

1. 比较简单,应该在shell编写时就注意。

在shell脚本的头部添加”. $HOME/.bash_profile”(要注意前面有个点,点后面是空格,之后是环境变量位置)。

也可以直接写环境变量的绝对位置。如test用户的根目录在/home/test下可以在shell头部添加”. /home/test/.bash_profile”

2.比较紧急情况,再确认可以手动执行脚本情况下,可以使用另一种方法。使用root权限调用shell脚本。

如果有/home/test/test.sh需要每分钟运行一次,可以使用root登陆,在root的crontab中添加如下:

# crontab -e

*/1 * * * * /home/test/test.sh