
Expect är ett verktyg för att automatisera interaktiva kommandon och applikationer i Unix- och Linux-miljöer. Det är särskilt användbart för att hantera program som kräver användarinmatning under körning, exempelvis lösenord, användarnamn eller andra typer av inmatningar som normalt sett kräver manuell interaktion.
Expect använder följande viktiga parametrar:
spawn
: Startar ett kommando eller en process.expect
: Väntar på ett specifikt mönster eller sträng från processen.send
: Skickar en sträng eller kommando till den aktiva processen.interact
: Överlåter kontrollen tillbaka till användaren efter automation.
Grundläggande syntax
Den grundläggande syntaxen för ett expect-skript ser ut så här:
#!/usr/bin/expect -f
spawn kommando
expect \"prompt\"
send \"svar\\r\"
interact
10 praktiska exempel på användning av expect
- Automatiserad SSH-inloggning:
#!/usr/bin/expect -f
spawn ssh användare@server
expect \"password:\"
send \"dittlösenord\\r\"
interact
- Automatiserad FTP-session:
#!/usr/bin/expect -f
spawn ftp ftp.server.com
expect \"Name\"
send \"användarnamn\\r\"
expect \"Password:\"
send \"lösenord\\r\"
expect \"ftp>\"
send \"put fil.txt\\r\"
send \"bye\\r\"
- Automatiserad lösenordsändring:
#!/usr/bin/expect -f
spawn passwd användare
expect \"Current password:\"
send \"gammaltlösen\\r\"
expect \"New password:\"
send \"nyttlösen\\r\"
expect \"Retype new password:\"
send \"nyttlösen\\r\"
- Automatisering av mysql-inloggning:
#!/usr/bin/expect -f
spawn mysql -u root -p
expect \"Enter password:\"
send \"lösenord\\r\"
interact
- Automatisk hantering av sudo-kommandon:
#!/usr/bin/expect -f
spawn sudo apt update
expect \"password for\"
send \"dittlösenord\\r\"
interact
- Fjärrkommandon via SSH:
#!/usr/bin/expect -f
spawn ssh användare@server \"ls -l\"
expect \"password:\"
send \"dittlösenord\\r\"
interact
- Automatiserad SCP-filöverföring:
#!/usr/bin/expect -f
spawn scp fil.txt användare@server:/mapp
expect \"password:\"
send \"dittlösenord\\r\"
interact
- Automatiserad interaktion med telnet:
#!/usr/bin/expect -f
spawn telnet server 23
expect \"login:\"
send \"användare\\r\"
expect \"Password:\"
send \"lösenord\\r\"
interact
- Automatiserad hantering av interaktiva installationsscript:
#!/usr/bin/expect -f
spawn ./install.sh
expect \"Enter path\"
send \"/usr/local/app\\r\"
expect \"Confirm (y/n):\"
send \"y\\r\"
interact
- Automatisering av git-kloning med autentisering:
#!/usr/bin/expect -f
spawn git clone https://github.com/användare/repo.git
expect \"Username\"
send \"användarnamn\\r\"
expect \"Password\"
send \"lösenord\\r\"
interact
Genom att använda expect kan du effektivisera och automatisera repetitiva och interaktiva arbetsuppgifter, vilket sparar både tid och resurser.
Här kan du läsa manualsida om expect(1) i vår wiki