[Linux] expect를 이용하여 쉘스크립트를 실행시켜 다른 서버 원격 접속하여 명령어 날리기

2022. 11. 30. 16:55·Server/Linux
728x90
반응형

 

#!/bin/sh
USER=root
IP=000.000.000
PW=p@sswOrD

# install expect - important#

expect -c "
spawn ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh'
expect 'password:'
        send \"$PW\\r\"
expect eof
set timeout 3
"

 

위에서 부터 하나씩 해석을 해보자면,

#!/bin/bash

위 코드는 해당 파일을 bash 쉘로 실행시킨다는 것을 정의하는 것이고.

 

USER, IP, PW 변수로 선언하여 초기화하였다.

 

여기서부터가 중요한대.

expect -c "

 

우리는 expect라는 모듈을 이용할 것이다.

expect 모듈은 커맨드 대화를 상호작용할 수 있도록 도와주는 모듈인데

우리는 비밀번호를 물어보는 질문은 던졌을때 그에 대해 답할 때 쓰이게 된다.

 

spawn ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh'
expect 'password:'
        send \"$PW\\r\"

ssh -o StrictHostKeyChecking=no $USER@$IP 'example.sh' 이 구문은

ssh -o StrictHostKeyChecking=no $USER@$IP 변수로 선언된 USER와 IP에 해당하는 서버에 접속 한다는 의미이고,

example.sh는 접속하는 원격서버에 파일을 접속하고 바로 실행시킨다는 의미이다. 이 해당 파일을 기입하지 않아도 된다.

 

그리고.. 서버 접속시 비밀번호를 물어보게 된다...

이때! expect를 사용한다.

'password:' 라는 질문이 던져오면 send "$PW" 변수 PW를 답을 줘서 해당 서버에 접속한다.

 

expect eof
"

이렇게 expect가 종료된다.

728x90
반응형

'Server > Linux' 카테고리의 다른 글

[nginx] autoindex로 디렉토리 리스팅 하였을 때 cors 에러  (0) 2023.04.10
[Linux] Shell Script(쉘 스크립트) 프로그램 및 패키지 설치 여부 확인  (0) 2022.12.08
[Linux] 리눅스 타임존(TimeZone, TZ) 한국 표준시(KST)로 변경하기  (0) 2022.11.29
[SSL] Oracle linux server에서 let's encrypt로 nginx에 SSL 적용하기 (인증서 자동 갱신 포함)  (0) 2022.06.14
[linux] nginx 사용시 proxy_pass 연결 안되는 경우 해결법  (0) 2022.03.30
'Server/Linux' 카테고리의 다른 글
  • [nginx] autoindex로 디렉토리 리스팅 하였을 때 cors 에러
  • [Linux] Shell Script(쉘 스크립트) 프로그램 및 패키지 설치 여부 확인
  • [Linux] 리눅스 타임존(TimeZone, TZ) 한국 표준시(KST)로 변경하기
  • [SSL] Oracle linux server에서 let's encrypt로 nginx에 SSL 적용하기 (인증서 자동 갱신 포함)
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nginx
    Java Array
    spring java
    브라우저 자동화
    React Compiler
    vue 설치
    vscode
    프런트엔드
    css perspective
    티스토리 자동화
    java casting
    Rust lang
    mysql db
    servlet class
    Extension Bisect
    오류
    css list
    리눅스 설치
    자바 클래스
    API 설계
    에디터 팁
    클론코딩
    css block
    nginx ssl 설정
    css table
    lang rust
    svelte
    proxy pass
    자바 배열
    SSL 인증서
    nginx ssl 적용
    러스트
    VS Code 팁
    AI 코딩 에이전트
    ubuntu
    ssl 인증서 발급
    jsp include
    자바 생성자
    css tb
    자바 exception
    docker
    css transition
    css float
    rust linux
    자바 객체 지향
    vue cli
    자바 for문
    Node
    jsp parameter
    gitlab 설치
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[Linux] expect를 이용하여 쉘스크립트를 실행시켜 다른 서버 원격 접속하여 명령어 날리기
상단으로

티스토리툴바