운영 및 유지보수 리눅스 운영 및 유지 관리 Linux는 자세한 설명을 기대합니다.

Linux는 자세한 설명을 기대합니다.

Aug 09, 2019 pm 02:22 PM
linux

Linux는 자세한 설명을 기대합니다.

expect는 어디에서나 볼 수 있습니다

expect 명령을 처음 본 것은 제가 처음으로 정식 출시에 참여했을 때였습니다. 실력 있는 분이 직접 작성한 자동 배포 및 MD5 비교 세트였습니다. 예, 본격적인 온라인 도구가 출시되었습니다. 할 일이 없을 때 몇 가지 스크립트와 많은 기대 명령을 읽었습니다. 나는 Expect 명령의 사용법을 정말로 이해할 수 없었기 때문에, 이번 기사를 Expect 명령에 대해 요약해 보는 시간을 가졌습니다.

추천: [Linux 동영상 튜토리얼]

먼저 질문을 해주세요

이제 두 개의 Linux 호스트 A와 B가 있는데 호스트 A에서 호스트 B로 ssh를 보낸 다음 호스트 B에서 명령을 실행하는 방법은 무엇입니까? ? 이 프로세스를 완전히 자동화할 수 있나요? 다음 방법을 사용할 수 있습니다.

ssh admin@10.220.20.15 "ls"
로그인 후 복사

하지만 이 방법은 매번 비밀번호를 입력해야 하고 일부 복잡한 논리나 명령을 실행할 수 없습니다. 그렇다면 완전 자동화를 실현하는 방법은 무엇입니까? 이는 오늘 기사에 요약된 기대치를 사용합니다.

무엇이 예상되나요?

expect는 사람의 개입 없이 대화형 작업을 자동화하는 데 사용되는 무료 프로그래밍 도구입니다. 직설적으로 말하자면, Expect는 자동 상호 작용 기능을 구현하는 데 사용되는 소프트웨어 세트입니다.

실제 작업에서 명령, 스크립트 또는 프로그램을 실행할 때 이러한 명령, 스크립트 또는 프로그램을 터미널에서 계속 실행하려면 특정 지침이 필요하며 이러한 입력은 수동으로 수행되어야 합니다. Expect를 사용하면 프로그램 프롬프트에 따라 프로그램에 제공되는 표준 입력을 시뮬레이션하여 자동화된 대화형 실행을 달성할 수 있습니다. 이것이 예상되는 것입니다! ! !

expect basics

expect를 사용할 때 기본적으로 다음 네 가지 명령을 처리합니다.

Linux는 자세한 설명을 기대합니다.

send 명령은 문자열 매개변수를 받아 프로세스에 매개변수를 보냅니다.

expect 명령은 send 명령과 반대입니다. Expect 명령은 일반적으로 프로세스의 피드백을 기다리는 데 사용됩니다. 그런 다음 프로세스의 피드백을 기반으로 해당 대화형 명령을 보냅니다.

spawn 명령은 새로운 프로세스를 시작하는 데 사용됩니다. 생성 후 send 및 Expect 명령은 둘 다 생성을 사용하여 열린 프로세스와 상호 작용합니다.

사실 상호 작용 명령은 많이 사용되지 않습니다. 일반적으로 generate, send 및 Expect 명령은 작업을 잘 완료할 수 있지만 일부 특별한 경우에는 여전히 상호 작용 명령을 주로 사용해야 합니다. 자동화를 종료하려면 인간 상호 작용을 시작하십시오. 예를 들어, ftp 로그인 호스트를 완료하고 파일 다운로드 작업을 수행하기 위해 generate, send 및 Expect 명령을 사용합니다. 그러나 파일 다운로드가 완료된 후에도 ftp 명령줄 상태를 계속 유지할 수 있기를 바랍니다. 후속 명령을 수동으로 실행할 수 있습니다. 이 경우 상호 작용 명령을 사용하면 이 작업을 매우 잘 완료할 수 있습니다.

실용 코드 분석

Expect는 위에 요약되어 있으며, 특히 일반적으로 사용되는 일부 명령에 대해 자세히 설명합니다. 다음은 일반적으로 사용되는 몇 가지 예상 스크립트를 통해 예상을 사용하여 일부 일일 작업을 완료하는 방법에 대한 자세한 설명입니다.

#!/usr/tcl/bin/expect
set timeout 30
set host "101.200.241.109"
set username "root"
set password "123456"
spawn ssh $username@$host
expect "*password*" {send "$password\r"}
interact
로그인 후 복사

이것은 예상의 기본 사용법을 보여주는 매우 간단한 예상 샘플 코드입니다.

#!/usr/tcl/bin/expect: 스크립트를 해석하려면 예상을 사용하세요.

set timeout 30: 시간 제한을 초 단위로 설정합니다. 기본값은 10초입니다.

set 호스트 "101.200.241.109": 변수 설정 ;

spawn ssh $username@$host:spawn은 Expect 환경에 진입한 후 실행될 수 있는 Expect의 내부 명령입니다. 주요 기능은 ssh 실행 프로세스에 셸을 추가하여 대화형 지침을 전달하는 것입니다.

expect "*password*": 여기서는 Expect의 내부 명령이기도 합니다. 이 명령은 마지막 출력 결과가 문자열인지 확인하는 것을 의미합니다. "password"가 있으면 즉시 반환되고, 그렇지 않으면 일정 시간 후에 반환됩니다. 여기서 대기 시간은 이전에 설정된 30초입니다.

send "$passwordr": 해당 출력 결과는 다음과 같습니다. 일치하면 열려 있는 SSH 프로세스에 비밀번호를 보내고 대화형 작업을 수행합니다.

interact: 실행이 완료된 후에도 대화형 상태를 유지하고 이때 제어권을 콘솔로 전달할 수 있습니다. 해당 문장이 없을 경우 원격 단말기에 머무르지 않고 로그인 완료 후 종료됩니다.

위의 간단한 스크립트에 대한 분석입니다. 위의 예에서는 모드 동작이라는 매우 중요한 개념이 포함됩니다. 즉, 위의 예상 "*password*" {send "$passwordr"} 의미입니다. 이 코드로 표현됩니다.

Mode-Action

"*password*" {send "$passwordr"}를 예상하는 코드와 결합하여 "Mode-Action"에 대해 이야기해 보겠습니다. 간단히 말하면, 패턴이 일치하면 해당 작업이 수행되고, 비밀번호 문자열이 일치하면 비밀번호가 입력됩니다. 다음과 같은 코드도 볼 수 있습니다:

expect {
    "password" {
        send "$password\r"
        exp_continue
    }
    eof
    {
        send "eof"
    }
}
로그인 후 복사

其中exp_continue表示循环式匹配,通常匹配之后都会退出语句,但如果有exp_continue则可以不断循环匹配,输入多条命令,简化写法。

传参

很多时候,我们需要传递参数到脚本中,现在通过下面这段代码来看看如何在expect中使用参数:

#!/usr/tcl/bin/expect
if {$argc < 3} {
    puts "Usage:cmd <host> <username> <password>"
    exit 1
}
set timeout -1
set host [lindex $argv 0] 
set username [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $username@$host
expect "*password*" {send "$password\r"}
interact
로그인 후 복사

在expect中,\$argc表示参数个数,而参数值存放在$argv中,比如取第一个参数就是[lindex $argv 0],以此类推。

总结

能够在工作中熟练的使用Shell脚本就可以很大程度的提高工作效率,如果再搭配上expect,那么很多工作都可以自动化进行,对工作的展开如虎添翼。如果你会Python的话,你的视野将会更加开阔,那个时候你又会“嫌弃”expect了。

위 내용은 Linux는 자세한 설명을 기대합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Android TV Box, 비공식 Ubuntu 24.04 업그레이드 제공 Android TV Box, 비공식 Ubuntu 24.04 업그레이드 제공 Sep 05, 2024 am 06:33 AM

많은 사용자에게 Android TV 박스를 해킹하는 것은 어려운 일로 들립니다. 그러나 개발자 Murray R. Van Luyn은 Broadcom 칩 부족으로 인해 Raspberry Pi에 대한 적절한 대안을 찾아야 하는 과제에 직면했습니다. Armbia와의 협력 노력

DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 DeepSeek 웹 버전 입구 DeepSeek 공식 웹 사이트 입구 Feb 19, 2025 pm 04:54 PM

DeepSeek은 웹 버전과 공식 웹 사이트의 두 가지 액세스 방법을 제공하는 강력한 지능형 검색 및 분석 도구입니다. 웹 버전은 편리하고 효율적이며 설치없이 사용할 수 있습니다. 개인이든 회사 사용자이든, DeepSeek를 통해 대규모 데이터를 쉽게 얻고 분석하여 업무 효율성을 향상시키고 의사 결정을 지원하며 혁신을 촉진 할 수 있습니다.

DeepSeek을 설치하는 방법 DeepSeek을 설치하는 방법 Feb 19, 2025 pm 05:48 PM

Docker 컨테이너를 사용하여 사전 컴파일 된 패키지 (Windows 사용자의 경우)를 사용하여 소스 (숙련 된 개발자)를 컴파일하는 것을 포함하여 DeepSeek를 설치하는 방법에는 여러 가지가 있습니다. 공식 문서는 신중하게 문서를 작성하고 불필요한 문제를 피하기 위해 완전히 준비합니다.

BitPie Bitpie 지갑 앱 다운로드 주소 BitPie Bitpie 지갑 앱 다운로드 주소 Sep 10, 2024 pm 12:10 PM

BitPie Bitpie Wallet 앱을 다운로드하는 방법은 무엇입니까? 단계는 다음과 같습니다. AppStore(Apple 기기) 또는 Google Play Store(Android 기기)에서 "BitPie Bitpie Wallet"을 검색하세요. 앱을 다운로드하려면 "받기" 또는 "설치" 버튼을 클릭하세요. 컴퓨터 버전의 경우 공식 BitPie 지갑 웹사이트를 방문하여 해당 소프트웨어 패키지를 다운로드하세요.

Bitget 공식 웹 사이트 설치 (2025 초보자 안내서) Bitget 공식 웹 사이트 설치 (2025 초보자 안내서) Feb 21, 2025 pm 08:42 PM

Bitget은 스팟 거래, 계약 거래 및 파생 상품을 포함한 다양한 거래 서비스를 제공하는 Cryptocurrency 교환입니다. 2018 년에 설립 된이 교환은 싱가포르에 본사를두고 있으며 사용자에게 안전하고 안정적인 거래 플랫폼을 제공하기 위해 노력하고 있습니다. Bitget은 BTC/USDT, ETH/USDT 및 XRP/USDT를 포함한 다양한 거래 쌍을 제공합니다. 또한 Exchange는 보안 및 유동성으로 유명하며 프리미엄 주문 유형, 레버리지 거래 및 24/7 고객 지원과 같은 다양한 기능을 제공합니다.

Zabbix 3.4 소스 코드 컴파일 설치 Zabbix 3.4 소스 코드 컴파일 설치 Sep 04, 2024 am 07:32 AM

1. 설치 환경(Hyper-V 가상 머신): $hostnamectlStatichostname:localhost.localdomainIconname:computer-vmChassis:vmMachineID:renwoles1d8743989a40cb81db696400BootID:renwoles272f4aa59935dcdd0d456501Virtualization:microsoftOperatingSystem:CentOS Linux7(Co 다시)CPEOS이름:cpe:

Ouyi OKX 설치 패키지가 직접 포함되어 있습니다 Ouyi OKX 설치 패키지가 직접 포함되어 있습니다 Feb 21, 2025 pm 08:00 PM

세계 최고의 디지털 자산 거래소 인 Ouyi Okx는 이제 안전하고 편리한 거래 경험을 제공하기 위해 공식 설치 패키지를 시작했습니다. OUYI의 OKX 설치 패키지는 브라우저를 통해 액세스 할 필요가 없습니다. 설치 프로세스는 간단하고 이해하기 쉽습니다. 사용자는 최신 버전의 설치 패키지를 다운로드하고 설치를 단계별로 완료하면됩니다.

Gate.io 설치 패키지를 무료로 받으십시오 Gate.io 설치 패키지를 무료로 받으십시오 Feb 21, 2025 pm 08:21 PM

Gate.io는 사용자가 설치 패키지를 다운로드하여 장치에 설치하여 사용할 수있는 인기있는 cryptocurrency 교환입니다. 설치 패키지를 얻는 단계는 다음과 같습니다. Gate.io의 공식 웹 사이트를 방문하고 "다운로드"를 클릭하고 해당 운영 체제 (Windows, Mac 또는 Linux)를 선택하고 컴퓨터에 설치 패키지를 다운로드하십시오. 설치 중에 항 바이러스 소프트웨어 또는 방화벽을 일시적으로 비활성화하여 원활한 설치를 보장하는 것이 좋습니다. 완료 후 사용자는 GATE.IO 계정을 만들려면 사용을 시작해야합니다.

See all articles