标签:shell 密码 linux sshpass 自动登录
在很多实践项目中,我们经常会通过SSH来进行认证,如通过SSH拷贝文件,虽然我们可以使用公钥与私钥实现ssh 无密码登录,在不同的服务器上又需要配对相应的密钥,切换用户麻烦等问题,在一些需要交互但会涉及到批量处理的时候,通过shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录会大大的提高工作效率
#! /bin/bash ############################################## #Author: liaodengsong #date: 2015-12-10 #Emil: lldss@mail.com #Cropright: 2015@yineng #version="0.5" ############################################## shellDir=$(cd "$(dirname "$0")"; pwd) prog="ysa-release" platform="YNedut" releaseDir="user@125.XX.93.XX:/home/ysa-web" cmdRsync="rsync -avzrt --delete --progress -e ‘ssh -p 59422‘ " fileHome="/home/ysa/target/EveryVersionFile" verHome="/home/ysa/target/version" echo "please input the version key:" read verKey echo "please input the verDataBases key:" read dbKey if [ ! -d ${fileHome}/${verKey}/ ] || [ ! -f ${verHome}/${dbKey} ] ; then echo "The Key Error,exit!" exit 0; fi echo "please input the release host user password:" stty -echo read PASSWORD stty echo fDir="${releaseDir}/files/" vDir="${releaseDir}/version/" echo "sshpass -p $PASSWORD $cmdRsync ${fileHome}/${verKey}/* $fDir" >/dev/shm/tempCMD echo "sshpass -p $PASSWORD $cmdRsync ${verHome}/${dbKey} $vDir" >>/dev/shm/tempCMD awk ‘{$3="***"}1‘ FS=‘ ‘ OFS=‘ ‘ /dev/shm/tempCMD echo "Any key to continue!" read -n1 source /dev/shm/tempCMD rm -f /dev/shm/tempCMD
一,不显示SSH输入的密码
stty -echo read PASSWORD stty echo #关闭输入不显示
参考网站:http://www.jb51.net/article/40654.htm
二,通过SSH输入的密码实现自动登录
sshpass -p $PASSWORD ssh root@1.2.3.4 #实现SSH在shell脚本里自动登录
参考网站:http://blog.csdn.net/gsnumen/article/details/7293274
CentOS6安装sshpass:
cd /etc/yum.repos.d/ wget http://download.opensuse.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo yum install sshpass
三,输出信息时不显示密码信息
awk ‘{$3="***"}1‘ FS=‘ ‘ OFS=‘ ‘ /dev/shm/tempCMD #将第三列输入的SSH密码在屏幕显示时,显示为*
参考内容:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=3751275
http://bbs.chinaunix.net/thread-2309494-1-1.html
重点内容摘录待验证:
cat filename|while read line do echo "$line"|awk -F\| -v v=\| ‘{print $1v$2v$3v$4v""v$6v}‘ done
awk ‘BEGIN{OFS=FS="|"}{$5="";}1‘ file
awk ‘{$5=""}1‘ FS=\| OFS=\| infile
本文出自 “Linux_运维_自动化” 博客,请务必保留此出处http://artman.blog.51cto.com/3218204/1721608
shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录sshpass 应用实践
标签:shell 密码 linux sshpass 自动登录
原文地址:http://artman.blog.51cto.com/3218204/1721608