expect(1)
expect(1) - Linux manual sida
Namn
expect - Programmerad dialog med interaktiva program, Version 5
Synopsis
expect [ -dDinN ] [ -c kommandon ] [ [ -[f|b] ] kommandofil ] [ argument ]
Introduktion
Expect är ett program som "pratar" med andra interaktiva program enligt ett skript. Genom att följa skriptet vet Expect vad som kan förväntas från ett program och vad det korrekta svaret bör vara. Expect kan användas direkt i C eller C++ (utan Tcl) och kan även integreras med Tk genom Expectk.
Expect är särskilt användbart för att:
- Automatisera inloggning på fjärrsystem
- Interagera med interaktiva kommandoradsverktyg
- Automatisera felhantering vid exekvering av systemverktyg
- Hantera terminalapplikationer
Användning
Expect läser en kommandofil och exekverar instruktioner enligt den. Alternativt kan det användas med `#!` notation i skript:
#!/usr/local/bin/expect -f
Några viktiga flaggor:
- `-c "kommando"` - Exekverar ett kommando innan något annat i skriptet.
- `-d` - Aktiverar diagnostisk utmatning.
- `-i` - Startar interaktivt läge.
- `-N` - Förhindrar laddning av konfigurationsfiler.
- `-n` - Förhindrar laddning av användarens `.expect.rc`-fil.
Kommandon
Expect använder Tcl som sitt skriptspråk och inkluderar kommandon för att hantera interaktiva sessioner.
- `spawn <program>` - Startar ett nytt program för interaktion.
- `expect <mönster>` - Väntar på att en viss utmatning ska visas.
- `send "text"` - Skickar text till det startade programmet.
- `interact` - Ger användaren kontroll över sessionen.
- `exp_continue` - Fortsätter matchning av fler mönster efter en träff.
- `expect_user` - Väntar på input från användaren.
- `log_file <fil>` - Loggar sessionens utmatning till en fil.
Exempel
Ett enkelt Expect-skript för att automatisera en SSH-inloggning:
#!/usr/bin/expect -f spawn ssh användare@server expect "password:" send "mittlösenord\r" interact
Buggar
Några kända problem:
- Vissa system kan ha problem med pty-tilldelning.
- Terminalinställningar kan påverka hur Expect tolkar utmatning.
- Förväntade mönster kan påverkas av terminalens buffert och outputhantering.
Se även
- `Tcl(3)`, `libexpect(3)`
- "Exploring Expect" av Don Libes
Författare
Don Libes, National Institute of Standards and Technology (NIST)
Exempel på användning av expect(1)
1. Automatisera SSH-inloggning
Detta skript loggar in på en fjärrserver via SSH och kör ett kommando.
#!/usr/bin/expect -f set timeout 10 spawn ssh användare@exempel.com expect "password:" send "mittlösenord\r" expect "$ " send "ls -l\r" expect "$ " send "exit\r"
2. Automatisk filöverföring med SCP
Detta skript skickar en fil till en fjärrserver utan att manuellt ange lösenordet.
#!/usr/bin/expect -f set timeout 10 spawn scp fil.txt användare@exempel.com:/destination/ expect "password:" send "mittlösenord\r" expect eof
3. Automatiskt svara på en interaktiv terminalprompt
Detta skript svarar automatiskt på en fråga från ett interaktivt program.
#!/usr/bin/expect -f spawn program expect "Vill du fortsätta? (ja/nej)" send "ja\r" expect eof
4. Vänta på en specifik utdata och skicka svar
Detta skript kör ett kommando och väntar på en specifik utdata innan det skickar ett svar.
#!/usr/bin/expect -f spawn telnet server.exempel.com expect "login:" send "användare\r" expect "Password:" send "hemligtlösenord\r" expect ">" send "help\r" expect ">" send "exit\r"
5. Automatisk kompilering och hantering av frågor
Detta skript automatiserar en kompilering och hanterar eventuella bekräftelsefrågor.
#!/usr/bin/expect -f spawn make install expect { "Do you want to continue? (y/n)" { send "y\r"; exp_continue } eof }
Sidslut
Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man1/expect.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorreparation som har sponsrat Linux.se med webbhotell.