shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录sshpass 应用实践


在很多实践项目中,我们经常会通过SSH来进行认证,如通过SSH拷贝文件,虽然我们可以使用公钥与私钥实现ssh 无密码登录,在不同的服务器上又需要配对相应的密钥,切换用户麻烦等问题,在一些需要交互但会涉及到批量处理的时候,通过shell 密码输入不显示,Shell输出内容不显示密码,Shell实现有密码自动登录会大大的提高工作效率


#! /bin/bash
##############################################
#Author:                liaodengsong
#date:                  2015-12-10
#Emil:                  [email protected]
#Cropright:             2015@yineng
#version="0.5"
##############################################
shellDir=$(cd "$(dirname "$0")"; pwd)
prog="ysa-release"
platform="YNedut"

releaseDir="[email protected]:/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 [email protected]    #实现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,shell,自动登录,密码,sshpass)