Bash-Script automatische Antworten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Balou
Beiträge: 2
Registriert: 02.12.2010 17:22:25

Bash-Script automatische Antworten

Beitrag von Balou » 02.12.2010 17:35:58

Hallo,

Ich muss für ca. 40 rechner jeweiles ein TLS/SSL cert erstellen und da ich von Natur aus faul bin suche ich eine Möglichkeit dies automatisiert zu erledigen.

Ich habe mir ein kleines Bash-Script geschrieben komme aber nicht weiter....

Das Script soll für jeden Rechner einen Ordner anlegen die Dateien die zum erstellen der certs benötigt werden hinein kopieren. Das klappt auch alles so schön und gut.

Nun werden die Befehle aufgerufen die, die Zertifikate erstellen sollen. Hier müssen ne menge Fragen beantwortet werden und das soll alles automatisch passieren nur leider klappt dies nicht so ganz....

Hier mal mein Geschreibsel:

Code: Alles auswählen

#!/bin/bash
#Einlesen der Rechnernamen aus der rechner.txt
for rechner in `cat /data/admin/add/rechner.txt`
do
	mkdir -p /etc/ldap/certs/$rechner
	cd /etc/ldap/certs/$rechner
	cp -R /etc/ldap/certs/CA.pl /etc/ldap/certs/$rechner
	cp -R /etc/ldap/certs/demoCA /etc/ldap/certs/$rechner
	./CA.pl -newreq << EOF
passwort
passwort
land
staat
stadt
Firma1
Firma2
abteilung
$rechner.domäne.com
admin@domäne.com
passwort
sonstiges
EOF
	./CA.pl -sign << EOF
passwort
y #2x mit yes antworten
y
EOF
	mv newcert.pem $rechner.newcert.pem
	openssl rsa -in newkey.pem -out $rechner.newkey.pem << EOF
passwort
EOF
	chmod 600 $rechner.newkey.pem
	cp /etc/ldap/certs/demoCA/cacert.pem /etc/ldap/certs/$rechner
done
Er fragt immer nach dem Passwort bei Land ist die maximale Anzahl an Zeichen = 2 und da spuckt er mir immer aus.

Code: Alles auswählen

Country Name (2 letter code) [DE]:string is too long, it needs to be less than  2 bytes long
Ich gehe davon aus, dass er alle Antworten in die Country Code Variable schreiben will. Ich weiß nicht weiter wie es dem bei bringen kann, dass er alles Automatisch beantwortet.

Jemand ne idee?

Danke schonmal fürs lesen!

Grüße Balou

Balou
Beiträge: 2
Registriert: 02.12.2010 17:22:25

Re: Bash-Script automatische Antworten

Beitrag von Balou » 03.12.2010 08:43:49

Hallo,

Ich bin schon mal einen Schritt weiter gekommen.

Code: Alles auswählen

#!/bin/bash
#Einlesen des CA Passwortes, welches wiedergegeben werden soll
echo Geben sie ein CA Passwort ein:
read $PW
#Einlesen der Rechnernamen aus der rechner.txt
for rechner in `cat /data/admin/add/rechner.txt`
do
   #Kopieren der benötigten Dateien
   mkdir -p /etc/ldap/certs/$rechner
   cd /etc/ldap/certs/$rechner
   cp -R /etc/ldap/certs/CA.pl /etc/ldap/certs/$rechner
   cp -R /etc/ldap/certs/demoCA /etc/ldap/certs/$rechner
   #Erstellen des neuen Zertifikats - Hier zweimal Passwort eingeben
   ./CA.pl -newreq << EOM
#z.B. DE
land
#z.B. HB
staat
#z.B. Bremen
stadt
#Firmen bezeichnung
Firma1
Firma2
#Common Name des Client Zertifikates muss der FQDN sein
$rechner.domäne.com
#eMail des Admins/Ersteller
admin@domäne.com
#Challange Passwort - übernimmt er von oben
$PW
EOM
    #Signieren des Zertifikats mit dem RootCA - Hier einmal Passwort eingeben
   ./CA.pl -sign << EOM
#2x mit yes antworten
y
y
EOF
   #Umbenennen des Zertifikats
   mv newcert.pem $rechner.newcert.pem
   #Passwort des Zertifikats setzen und Umbenennen - Hier einmal Passwort eingeben
   openssl rsa -in newkey.pem -out $rechner.newkey.pem
   #Rechte setzen
   chmod 600 $rechner.newkey.pem
   #Kopieren des RootCA in den Ordner
   cp /etc/ldap/certs/demoCA/cacert.pem /etc/ldap/certs/$rechner
done
So wird alles richtig geschrieben aber man muss immer noch 4 mal das Passwort eingeben. Das muss doch auch automatisch lösbar sein, dass er das Passwort aus der Variable $PW nimmt und als Antwort gibt.

Grüße Balou

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Bash-Script automatische Antworten

Beitrag von ThorstenS » 03.12.2010 10:36:59

Mittels Debianexpect kannst du das Passwort automatisch eingeben lassen. Wenn du Hilfte beim Erstellen des Scripts brauchst, benutze expect_autoexpect aus dem Paket Debianexpect-dev oder schau hier: http://www.linuxjournal.com/article/4368 oder hier http://www.linuxjournal.com/article/3065

Antworten