셸 SSH 자동 로그 인 방법 예시

머리말
회 사 는 docker 를 개발 하여 사용 합 니 다.자신의 개발 기 에 로그 인 할 때마다 입력ssh user_name@ip_string을 한 다음 에 password 를 입력 하 는 것 을 확인 합 니 다.손 이 빠 르 면 잘못 지 는 경우 가 많 습 니 다.게으름뱅이 로 서 교묘 한 방법 을 찾 아 ssh 명령 을 살 펴 보 았 습 니 다.서버 와 암호 화 된 상호작용 을 해 야 하기 때문에 비밀 번 호 를 직접 추가 하여 로그 인 하 는 옵션 이 없어 서 그만 둘 수 밖 에 없 었 습 니 다.
며칠 전 동료 들 이 기술 공 유 를 하 던 중 명령 한 줄 만 입력 한 것 을 보 았 다.
셸 스 크 립 트 기초
ssh 자동 로그 인 스 크 립 트 를 작성 하기 전에 셸 스 크 립 트 의 기 초 를 말씀 드 리 겠 습 니 다.이 기 초 는 문법 이 아 닙 니 다.인터넷 곳곳에 있 습 니 다.셸 스 크 립 트 의 운영 체 제 를 정리 하 였 습 니 다~
셸 스 크 립 트 실행 방식
먼저 셸 의 몇 가지 시작 방식 을 말 해 야 합 니 다.바로 스 크 립 트 가 시 작 된 구 덩이 를 밟 아서 원래 10 분 만 에 해 결 된 스 크 립 트 를 사용 하고 두 시간 이 걸 려 서 해 결 했 습 니 다.동시에 우리 로 하여 금 셸 을 실행 하 게 하여 그 이 유 를 알 게 한다.
파일 이름 으로 실행
셸 스 크 립 트 는 파일 이름 을 통 해 직접 실행 할 수 있 습 니 다.주의해 야 할 것 은 파일 실행 권한 입 니 다.sudo chmod+x./file 통과 하기name.sh 파일 에 실행 권한 추가 하기;
파일 을 실행 할 스 크 립 트 해석 기 를 지정 합 니 다.
우리 가 자주 쓰 는 sh filename.sh 는 스 크 립 트 해석 기/bin/sh 를 지정 하여 실행 스 크 립 트 를 설명 합 니 다.흔히 볼 수 있 는 스 크 립 트 해석 기 는 다음 과 같 습 니 다./bin/bash 등 은 ls-l/bin/*sh 명령 을 사용 하여 현재 사용 가능 한 스 크 립 트 해석 기 를 볼 수 있 습 니 다.
사용../filename 또는 source 명령 실행 스 크 립 트
이 방식 은 앞의 두 가지 방식 처럼 fork 키 프로 세 스 가 스 크 립 트 를 실행 하지 않 고 현재 셸 환경 을 사용 하여 실 행 됩 니 다.bashrc 또는.bashprofile 이 수정 되 었 을 때,우 리 는 셸 을 다시 시작 하거나 시스템 에 다시 로그 인하 지 않 아 도 현재 의 변경 사항 을 적용 할 수 있 습 니 다.
shebang
우 리 는 셸 스 크 립 트 를 쓸 때 항상 맨 앞 에 한 줄 을 추가 하 는 것 에 익숙 합 니 다\#!/binbash,이것 은 바로 스 크 립 트 의 shebang 입 니 다.왜 이런 이상 한 이름 을 부 르 는 지 에 대해 C 언어 와 유 닉 스 의 개발 자 데 니스 리 치 는 이것 을'hash-bang'과 유사 한 영국 풍 묘사 문자 라 고 부 릅 니 다.
위 키 의 설명 을 붙 입 니 다.
컴퓨터 과학 에서 Shebang 은 우물 번호 와 느낌표 로 구 성 된 문자 직렬 로 텍스트 파일 의 첫 줄 앞 두 글자 에 나타난다.파일 에 Shebang 이 존재 하 는 경우 유 닉 스 운영 체제 의 프로그램 불 러 오기 기 는 Shebang 후의 내용 을 분석 하고 이 내용 을 해석 기 명령 으로 호출 하 며 Shebang 이 불 러 온 파일 경 로 를 이 해석 기의 매개 변수 로 합 니 다.
쉽게 말 하면 이 스 크 립 트 가 실 행 될 때의 해석 기 를 표시 하기 때문에 파일 이름 으로 셸 스 크 립 트 를 직접 실행 할 때 shebang 을 가 져 가 야 합 니 다.또한,우 리 는 shebang 뒤에 옵션 을 직접 추가 할 수 있 습 니 다.실행 할 때 우 리 는 기본적으로 옵션 을 사용 하여 실행 합 니 다.
예 를 들 어 test.sh 의 shebang 은\#!/bin/sh-x,그럼 스 크 립 트 를 실행 할 때:

./test.sh hello
해당:

bin/sh -x ./test.sh hello;
ssh 자동 로그 인 스 크 립 트 를 만 드 는 데 필요 한 shebang(해석 기)은/usr/bin/expect 입 니 다.
주의해 야 할 것 은:스 크 립 트 해석 기 를 지정 하여 스 크 립 트 를 실행 할 때 shebang 은 지정 한 스 크 립 트 해석 기 를 덮어 씁 니 다.즉,지정 한 스 크 립 트 해석 기 를 우선 사용 하여 스 크 립 트 를 실행 합 니 다(습관 적 으로 sh./test.sh 로 command not found 를 알려 줍 니 다)
expect 해석 기
expect 는 자동 적 이 고 상호작용 적 인 작업 을 실현 할 수 있 는 해석 기 입 니 다.흔히 볼 수 있 는 셸 문법 명령 도 설명 할 수 있 습 니 다.그 특징 은 다음 과 같은 몇 가지 명령 입 니 다.
spawn 명령:
spawn command 명령 은 command 명령 을 실행 하고 이 하위 프로 세 스에 서 다음 명령 을 수행 합 니 다.
ssh 자동 로그 인 스 크 립 트 에서 저 희 는spawn ssh user_name@ip_str를 사용 하여 fork 키 프로 세 스 가 ssh 로그 인 명령 을 수행 합 니 다.
expect 명령:
expect 명령 은 expect 해석 기의 관건 적 인 명령 입 니 다.일반적인 용법 은 expect"string"입 니 다.즉,string 문자열 을 가 져 오 기 를 원 합 니 다.string 문자열 에서*등 어댑터 를 사용 할 수 있 습 니 다.
string 이 명령 행 에서 돌아 오 는 정보 와 일치 하면 expect 는 즉시 스 크 립 트 를 아래로 실행 합 니 다.
set timeout 명령:
set timeout n 명령 은 expect 명령 의 대기 시간 초과 시간 을 n 초 로 설정 합 니 다.n 초 동안 원 하 는 명령 을 얻 지 못 했 습 니 다.expect 는 false 이 고 스 크 립 트 는 계속 아래로 실 행 됩 니 다.
send 명령:
send 명령 의 일반적인 용법 은 send"string"입 니 다.그들 은 우리 가 평소에 명령 을 입력 하 는 것 처럼 명령 행 에 정 보 를 입력 합 니 다.물론 string 뒤에\r 를 추가 하 는 것 을 잊 지 마 세 요.
interact 명령:
interact 명령 은 간단 합 니 다.이 명령 을 실행 할 때 스 크 립 트 fork 의 하위 프로 세 스 는 사용자 에 게 작업 권 을 주 고 현재 셸 과 대화 할 수 있 도록 합 니 다.
스 크 립 트 완성
다음은 완 성 된 스 크 립 트 test.sh 입 니 다.

#!/usr/bin/expect     //   shebang

set timeout 3      //        3 
spawn ssh user_name@172.***.***.*** // fork       ssh  
expect "*password*"     //       'user_name@ip_string's password:' 
send "my_password\r"    //            
send "sudo -s\r" 
send "cd /data/logs\r"    //             
interact       //           
sudo chmod +x ./test.sh명령 을 실행 하여 셸 스 크 립 트 에 실행 권한 을 추가 합 니 다. ./test.sh명령 을 실행,원 클릭 로그 인 성공!
간단 한 몇 가지 명령 을 조합 하여 명령 행 과 의 상호작용 문 제 를 해결 한 후에 복잡 한 기능 도 많 습 니 다~
별명
스 크 립 트 가 완성 되 었 지만 작은 흠 이 있 습 니 다.
  • 입력./filename.sh 명령 이 너무 길 어 요...
  • 스 크 립 트 디 렉 터 리 에서 만 실행 할 수 있 습 니 다.그렇지 않 으 면 절대 경 로 를 사용 하여 출력 하 는 명령 이 더 깁 니 다.
  • 여기 서 우 리 는 Liux 의 alias 명령 을 생각 했다.
    alias 명령:
    alias 명령 사용 방식 은 alias aliasname="ori_command",aliasname 을 ori 로 설정command 의 별명,이렇게 해서 우 리 는 alias 를 입력 합 니 다.name,ori 를 실행 한 셈 입 니 다.command;
    그러나,우 리 는 당신 이 현재 셸 을 닫 은 후에 셸 창 을 하나 더 열 고 alias 를 사용 하 는 것 을 발견 할 것 입 니 다.name,시스템 알림 command 를 찾 을 수 없습니다.
    명령 을 유지 할 수 있 는 방법 이 있 습 니까?편집 bashprofile 파일.
    bash_프로필 파일
    우리 편집 bashprofile 파일,이 파일 은 터미널 창 을 만 들 때 먼저 실행 되 기 때문에 별명 을 다시 설정 할 수 있 습 니 다.
    명령 실행 vim~./bashprofile,파일 내부 에 추가:
    alias alias_name="/root_dir/../file_name.sh
    저장 후 사용.~./bashprofile 또는 source~./bash프로필 은 현재 스 크 립 트 에서 별명 명령 을 한 번 실행 하고 설정 을 완료 합 니 다.
    이렇게 해서 우 리 는 어느 디 렉 터 리 에 있 든 지 alias 를 입력 하면 됩 니 다.name 명령,리 턴,진정한 원 클릭 로그 인!
    총결산
    프로그래머 로 서 항상 게 으 름 을 피 우 는 의식 을 유지 하고 있다.유 닉 스 시스템 에 서 는 셸 이라는 신기 한 도 구 를 낭비 하지 말고 컴퓨터 가 우 리 를 위해 서 비 스 를 제공 합 니 다~
    여기 서 셸 이 SSH 자동 로그 인 을 실현 하 는 방법 에 대한 예 시 를 소개 합 니 다.더 많은 셸 SSH 자동 로그 인 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기