Premiär! Fyndchans i SweClockers Månadens Drop
Permalänk

Linux conditional expect-fråga

Jag försöker förstå hur jag ska få till conditional expect i ett större script. Jag har provat att göra ett separat script för att testa men lyckas inte få något att fungera. Jag vill få till en funktion så att om jag använder tex. skickar in ett kommando som använder sudo så ska jag skicka lösenordet men annars inte.

#script.sh

#! /usr/bin/bash COMMAND="spawn ${1}" expect -c " set prompt "#|%|>|\\\$ $" ${COMMAND} expect { \"*?assword*\" send \"secretpassword\r\" exp_continue } expect -re $prompt "

Jag vill alltså att expect-functionen ska fungera med båda dessa kommandon:
script.sh "echo 'hello world'"
script.sh "sudo echo 'hello world"

Permalänk
Hedersmedlem

Det låter som att du krånglar till det. Varför inte bara köra scriptet som ska göra massa saker som root under sudo istället?

Permalänk

Det kanske var ett dåligt exempel. Men jag behöver en generisk expect-funktion som ska kunna svara beroende vilket kommando som skickas in. Jag vill altså få till en slags if/if else/else funktion där funktionen svarar med tex ett lösenord men bara om det behövs

Permalänk
Hedersmedlem

Vad är det du faktiskt ska göra? Att ha lösenord i fil sådär är ett stort tecken på att du gör något fel.

Permalänk
Skrivet av burton666:

Jag försöker förstå hur jag ska få till conditional expect i ett större script. Jag har provat att göra ett separat script för att testa men lyckas inte få något att fungera. Jag vill få till en funktion så att om jag använder tex. skickar in ett kommando som använder sudo så ska jag skicka lösenordet men annars inte.

#script.sh

#! /usr/bin/bash COMMAND="spawn ${1}" expect -c " set prompt "#|%|>|\\\$ $" ${COMMAND} expect { \"*?assword*\" send \"secretpassword\r\" exp_continue } expect -re $prompt "

Jag vill alltså att expect-functionen ska fungera med båda dessa kommandon:
script.sh "echo 'hello world'"
script.sh "sudo echo 'hello world"

if [ "$EUID" -eq 0 ]; then
[skicka lösenord]
else
echo "This script must be run as root"
exit 1
fi

Permalänk

Tackar för svaren men jag vill helt enkelt bara ha hjälp med själva expect-kommandot där jag vill förstå hur jag skulle kunna få till en if/else if/else funktionalitet i själva expect funktionen.

Jag har hittat en massa exempel på olika forum där man använder sig av "#!/usr/bin/expect" men har inte fått dessa att fungera så jag försöker att få detta att fungera i ett existerande script som redan använder sig av "#! /bin/bash".