2016-07-28 17 views
0

Ich bin verrückt versuchen, das funktioniert zu machen.Bash erwarten zwei Befehle in demselben Prozess

Ich brauche zu erwarten, ein paar Passwörter zu setzen. Das Problem, das ich habe, ist, dass ich zwei Befehle im selben Prozessor ausführen muss.

Hier den Code

yum install -y expect 
    secret="price_aws_git_secret.txt" 
    eval $(ssh-agent) 
    pass=$(cat $secret) 
    expect << EOF 
      spawn ssh-agent ssh-add price_aws_github 
      expect "Enter passphrase" 
      send "$pass\r" 
      spawn git clone [email protected]/repo.git 
      expect "Are you sure you want to continue connecting" 
      send "yes\r" 
      expect eof     
    EOF 

Der erste Befehl hinzufügen, in den ssh-agent den SSH-Schlüssel, und der zweite Befehl die git clone müssen im gleichen Prozess sein, dass die Mittel zu erhalten.

Ich suche Dokumentation und Beispiele Ich bin nicht in der Lage zu sehen, wie Expect mit zwei Befehlen in demselben Prozess funktioniert.

Irgendwelche Vorschläge?

Danke!

+0

Wie üblich sollten Sie 'expect' vermeiden können, indem Sie stattdessen die Public-Key-Authentifizierung einrichten. – chepner

+0

Es ist, was ich getan habe, aber sogar einen öffentlich-privaten Schlüssel auf github hinzufügen, müssen Sie ein Passwort angeben, wenn Sie den privaten Schlüssel zum ssh-add hinzufügen möchten – paul

+0

Sie gehen zu großen Längen. Warum erstellen Sie keinen Schlüssel ohne Passphrase? –

Antwort

2

Vorschläge zur Verwendung von ssh-Tasten besser beiseite, um Ihre Frage zu beantworten. Sie müssen nicht mit zwei Prozessen gleichzeitig interagieren. Sie müssen mit dem ersten umgehen und dann den zweiten starten: