2016-07-18 15 views
1

Ich versuche eine Skriptdatei auszuführen, die nach Passwort als Eingabe fragt. Gibt es irgendeine Möglichkeit, dem Befehl automatisch die benötigten Eingaben zu geben? Es ist in psql, die Parameter -U für Benutzername aber keinen Parameter für das Passwort hat.Gibt es eine Möglichkeit, automatisch einzugeben, wenn ein Skript ausgeführt wird?

Beispiel:

[email protected]:~$ sh redshift.sh 
Password for user xyz: 
+0

Mögliche Duplikat [geben Argumente zu einem interaktiven Programm nicht interaktiv] (http://stackoverflow.com/questions/14392525/Passing-Argumente-zu-einem interaktiven Programm-nicht-interaktiv) –

Antwort

0

Sie können wie unter Befehlszeilenargument für Ihr Skript zur Verfügung stellen: sh redshift.sh yourInput und in Ihrem Skript als var input=$1 erhalten und entsprechend verwenden.

Diese Frage ist bereits here beantwortet

+0

können Sie erarbeiten, meine .sh-Datei hat psql Befehl, der Benutzernamen Parameter aber nicht das Passwort auszeichnet. Ich muss es automatisieren, so dass ich nur Skript ausführen muss – Freeman

1

Sie expect dafür verwenden können. Hier ist einfaches Beispiel:

#!/usr/bin/expect -f 
set PASSWORD "1" 
set USER "dvp" 
spawn psql -U ${USER} -W 
expect "*?assword*" 
send -- "${PASSWORD}\r" 
expect eof 

Wahrscheinlich müssen Sie expect zuerst installieren:

sudo apt-get install expect