当前位置: 技术问答>linux和unix
Shell脚本修改求助
来源: 互联网 发布时间:2017-05-03
本文导语: 本帖最后由 magi1201 于 2013-11-28 11:24:29 编辑 HOSTNAME=$1 USER="hadoop1" PWD="hadoop1" FILEPATH=$2 FILENAME=$3 SLEEPCNT="5" LOGFILE="`pwd`/logs/startHadoop.log`date +%m%d%y`" i=1 while [ `expr $i` -lt 2 ] do i=`expr $i + 1` ( sleep $SLEEPCNT; ...
HOSTNAME=$1
USER="hadoop1"
PWD="hadoop1"
FILEPATH=$2
FILENAME=$3
SLEEPCNT="5"
LOGFILE="`pwd`/logs/startHadoop.log`date +%m%d%y`"
i=1
while [ `expr $i` -lt 2 ]
do
i=`expr $i + 1`
(
sleep $SLEEPCNT;
echo $USER;
sleep $SLEEPCNT;
echo $PWD;
sleep $SLEEPCNT;
echo "cd "$FILEPATH;
sleep $SLEEPCNT;
echo "nohup ./"$FILENAME" &";
sleep $SLEEPCNT
exit
) | telnet $1
done
if [ $? -eq 0 ];
then
echo "success"
echo $?
exit 0
else
echo "success"
exit 0
fi
其中 $1 为ip地址,$2 文件路径,$3 文件名
现在有两点疑问
1
i=1i=1 然后
while [ `expr $i` -lt 2 ]
do
i=`expr $i + 1`
`expr $i` -lt 2执行while循环体,接着
i=`expr $i + 1`那while在此就失去了循环的意义,请问,大家是否同意此看法?
2
) | telnet $1此处的 | 在此是什么作用呢?
我的问题
我现在要将此telnet链接方式改为ssh 链接方式,是否直接在要连接机子间建立互信,然后直接 将telnet $1 改为 ssh $1就可以了呢
请大家帮忙解答,灰常感谢。
|
(1)关于密码有个原则(个人认为),一定不能写在明面上!
(2)一台服务器可以与多台服务器之间有密钥互信关系。所以不用你那样复杂的写一个脚本。你还是安装那个地址,不用关心其他,只操作你的主机和远程主机之间的密钥关系试一下。
|
ssh和sftp这种security的连接方式都不支持在命令行里面指定密码或者从文件里面读取密码。
通常的两种方法:
1、建立密钥互信(不符合你的需求)
2、调用expect,参考:
expect的基本用法
http://bbs.chinaunix.net/thread-594417-1-1.html
expect交互FAQ
http://bbs.chinaunix.net/thread-3566066-1-1.html