셸 암호 입력 은 표시 되 지 않 습 니 다. 셸 출력 내용 은 암 호 를 표시 하지 않 습 니 다. 셸 은 암호 가 있 는 자동 로그 인 sshpass 응용 실천 을 실현 합 니 다.

많은 실천 프로젝트 에서 저 희 는 SSH 를 통 해 인증 을 합 니 다. 예 를 들 어 SSH 를 통 해 파일 을 복사 할 수 있 습 니 다. 공개 키 와 비밀 키 를 사용 하여 ssh 암호 없 는 로그 인 을 할 수 있 지만 서로 다른 서버 에서 해당 하 는 키 를 맞 추고 사용자 전환 이 번 거 로 운 등 문 제 를 해결 해 야 합 니 다. 상호작용 이 필요 하지만 대량으로 처리 할 때 셸 암호 입력 을 통 해 표시 되 지 않 습 니 다.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

1. SSH 가 입력 한 암 호 를 표시 하지 않 음
stty -echo
read PASSWORD
stty echo #       

참고 사이트:http://www.jb51.net/article/40654.htm
2. SSH 로 입력 한 비밀 번 호 를 통 해 자동 로그 인
sshpass -p $PASSWORD  ssh [email protected]    #  SSH shell       

참고 사이트:http://blog.csdn.net/gsnumen/article/details/7293274
CentOS 6 설치 sshpass:
cd /etc/yum.repos.d/
wget http://download.opensuse.org/repositories/home:Strahlex/CentOS_CentOS-6/home:Strahlex.repo
yum install sshpass

3. 정 보 를 출력 할 때 암호 정 보 를 표시 하지 않 습 니 다.
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

좋은 웹페이지 즐겨찾기