Linux Expect Command

Linux Expect Command



Bash-skript gör automatisering av uppgifter till en enkel sak. Det finns många sätt där du kan automatisera olika repetitiva uppgifter för att spara tid och ansträngning, inklusive att automatisera de uppgifter som kräver en användarinput. Dessutom erbjuder Linux kommandon som 'förvänta sig' att enkelt arbeta dig runt med skript.

Linux-kommandot 'expect' låter dig styra hur de skript som kräver en användarinmatning för att köra fungerar. Om ditt skript kräver en användarinmatning för att fortsätta exekvera, finns det ett sätt på hur du kan styra denna interaktivitet med kommandot 'expect'.







Komma igång med Linux Expect-kommandot

Linux-kommandot 'expect' kommer inte installerat på ditt system. Du kan dock använda olika metoder för att installera den. För vårt fall använder vi alternativet 'apt' för att installera det med följande kommando:



$ sudo benägen Installera förvänta



När processen är klar, kontrollera förväntad version för att verifiera att installationen lyckades.





När du har informationen tillgänglig på din Linux är nästa sak att lära dig hur du använder den för att automatisera de interaktiva uppgifterna.



Låt oss först skapa ett enkelt Bash-skript för att se hur det skulle köras interaktivt. Vårt skript uppmanar användaren att ange några detaljer, och det kan bara fortsätta att köras när en användarinmatning har lästs.

Skapa ett Bash-skript med en valfri textredigerare. När du har skrivit din skriptkod, spara och avsluta textredigeraren.

Du måste göra skriptfilen körbar. För det, använd följande syntax och matcha den med din målskriptfil:

$ sudo chmod +x < fil >

För att köra skriptet, använd kommandot './' följt av skriptets namn. Lägg märke till hur skriptet ber om användarinmatning och bara kan fortsätta när vi skriver in inmatningen.

När du vill automatisera en sådan interaktiv session måste du använda kommandot 'expect' för att skicka de nödvändiga ingångarna när det behövs istället för att en användare måste mata in dem.

Innan vi ser hur 'expect'-kommandot kommer till spel, lokalisera dess plats med hjälp av 'vilket'-kommandot. Notera sökvägen där 'förvänta'-kommandot ligger eftersom du behöver det när du skriver 'förvänta'-skriptet.

I det här fallet lagras 'expect' på platsen /usr/bin/expect.

Återigen, öppna din textredigerare och skapa ett annat skript. Den här gången sparar du det med tillägget '.exp' för att identifiera det som ett förväntat skript. Det finns fyra huvudkommandon som du kan använda när du skriver ditt förväntade skript:

  1. ge upphov till – Det initierar en ny process och läggs till för att anropa skriptet som du vill automatisera de interaktiva sektionerna.
  2. skicka – Den skickar det nödvändiga svaret som annars skulle infogas av användaren.
  3. förvänta – Den visar raden i målskriptet som väntar på en utmatning.
  4. påverka varandra – Det initierar interaktion med programmet.

För det här fallet har vi vårt 'förvänta'-skript skrivet som visas i följande. Vi lyfte fram målskriptet och gav 'förvänta' alternativen och vilket svar de kommer att få.

Den sista raden visar slutet av manuset och måste inkluderas när du skriver ett 'förvänta' manus. Gör 'expect'-skriptet körbart med 'chmod'.

Slutligen, kör skriptet och se vad som händer. Istället för att kräva att en användare interagerar med skriptet genom att infoga den nödvändiga inmatningen, läggs värdena som vi skickade i 'förvänta'-skriptet till som användarnas svar. På så sätt lyckas du automatisera de interaktiva användarinmatningarna.

Anta att du föredrar att arbeta med variabler för de värden du vill ha som användaren matar in; det är också möjligt. Ställ in målvariablerna och deras värden, anropa sedan variabelnamnet för att skicka det som förväntad användarinmatning. Ta en titt på följande exempel:

När du kör om detta modifierade skript får du fortfarande samma mål, bara att du använde variabler den här gången.

Jobbar med Autoexpect

Du kan undvika att skapa 'expect'-skriptet med kommandot 'autoexpect'. Hur detta fungerar är att du kör kommandot 'autoexpect' följt av skriptet som du vill skapa ett 'expect'-skript för.

Till exempel är vårt första skript 'sample.sh'. För det använder vi 'autoexpect' med följande kommando:

$ autoexpect . / sample.sh

När du har kört det skapas ett nytt 'förvänta'-skript automatiskt under namnet 'script.sh', och du kommer att bli ombedd att ge de förväntade svaren för användarinmatningarna.

Allt du behöver är att köra det skapade skriptet och du förenklar processen genom att eliminera behovet av att skapa 'förvänta'-skriptet manuellt.

Slutsats

Kommandot 'expect' hjälper till att automatisera de interaktiva användarinmatningarna när du skapar ett Bash-skript. När du ger det med de förväntade värdena kommer ditt skript att köras utan att stoppa, även om användarinmatning krävs. Vi har sett ett exempel på att arbeta med kommandot 'expect', inklusive hur man genererar ett 'expect'-skript med hjälp av autoexpect-programmet automatiskt. Det är allt!