Hallo zusammen.
Meine Grundsatzidee war: wie vereinfache ich mir das anlegen von vielen Benutzern?
gegeben ist eine Datei in der jeder Benutzer mit Passwort und sonstigen angaben, angegeben ist.
also habe ich mich dran gesetzt und eine kleine bash geschrieben die mir diese Datei zeile für Zeile einliest und diese in einem array zur späteren abfrage speichert.
Das sieht dann so aus
#!/bin/bash
nr=1
file=/var/script/test.db # wird später durch "read" ersetzt
echo einlesen der Textdatei mit den Benuterangaben
while read line;
do
echo "Zeile $nr=$line" #die Zeile dient der Überprüfung
row[$nr]=$line
let nr=$nr+1
done < $file
dann habe ich mich via google soweit schlau gelesen das man mit expect programmabläufe automatisieren kann, dabei aber festgestellt das ich das nicht in der bash mit reinschreiben kann, sondern eine erxterne Datei schreiben muß
also hab ich Folgendes geschrieben
#!/usr/bin/expect
spawn adduser [$user]
set passwort [$pass]
expect "password:"
send "$passwort\r"
expect "password:"
send "$passwort\r"
also muß ich die werte nur noch aus der ersten Datei in die 2. übergeben was ich dann mit dem anfürgen von
#ab hier nur zum testen
export user=${row[1]}
export pass=${row[2]}
export -p #zur Überprüfung ob der export funktioniert
/var/script/expect.scr
in der ersten Datei gemacht habe, nur leider mußte ich feststellen das ich die Variablen nicht so ohne weiteres in der expect Datei aufrufen kann. Google hat mir da leider auch noch nicht weitergeholfen.
Über ein bischen hilfe würde ich mich sehr freuen.
übergabe von variablen (expect)
Re: übergabe von variablen (expect)
Du kannst das expect-script ganz sicher mit ins bash-script reinschreiben,
nur als Beispiel:
Wäre ein automatischer Telnet-Login zu meiner dbox,
wird auf deine Anforderung leicht anzupassen sein.
nur als Beispiel:
Code: Alles auswählen
dbox=192.168.0.50
expect -c "spawn telnet $dbox; expect *login; send root\r; expect Password:; send dbox\r; interact"
wird auf deine Anforderung leicht anzupassen sein.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
Macht ohne Haftung funktioniert nicht!
Re: übergabe von variablen (expect)
das in die bash mit rein zu schreiben war auch mein erster gedanke, nur leider bekam ich dann immer die Fehlermeldung
befehlt oder datei nicht gefunden
und
#!/bin/bash
#!/usr/bin/expect
hat mir auch nicht geholfen
befehlt oder datei nicht gefunden
und
#!/bin/bash
#!/usr/bin/expect
hat mir auch nicht geholfen
Re: übergabe von variablen (expect)
Nur eine shebang Zeile:
#!/bin/bash
sonst nix!
Dann den Rest des scripts...
Du hast schon bash-scripte geschrieben?
Wie sieht die "Datei in der jeder Benutzer mit Passwort und sonstigen angaben, angegeben ist." aus?
#!/bin/bash
sonst nix!
Dann den Rest des scripts...
Du hast schon bash-scripte geschrieben?
Wie sieht die "Datei in der jeder Benutzer mit Passwort und sonstigen angaben, angegeben ist." aus?
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
Macht ohne Haftung funktioniert nicht!
Re: übergabe von variablen (expect)
Kleinere einfache bash-scripte hab ich schon geschrieben, hat auch immer wunderbar geklappt. nur hab ich noch nie mit der übergabe von variablen gearbeitet. Wobei die übergabe der fariablen eigentlich nicht das Problem ist, sonder ehr die frage wie ich in dem expect-script die variablen aufrufen kann.
die Datei in der die userdaten eingetragen ist eine einfache textdatei wie sie halt von micosoft produkten erstellt wir wobei in jeder zeile nur ein eintrag steht
benutzername
benutzerpasswort
Vorname
benutzername
...
die Datei in der die userdaten eingetragen ist eine einfache textdatei wie sie halt von micosoft produkten erstellt wir wobei in jeder zeile nur ein eintrag steht
benutzername
benutzerpasswort
Vorname
benutzername
...
Re: übergabe von variablen (expect)
ohne Gewähr, 3 Zeilen gehören zusammen, aber nur zwei werden gebraucht?
Schreib eine Zählschleife dazu, darin dann expect:
Schreib eine Zählschleife dazu, darin dann expect:
Code: Alles auswählen
#!/bin/bash
nr=1
file=/var/script/test.db # wird später durch "read" ersetzt
echo einlesen der Textdatei mit den Benuterangaben
while read line;
do
echo "Zeile $nr=$line" #die Zeile dient der Überprüfung
row[$nr]=$line
let nr=$nr+1
done < $file
for ((i=1; i<$nr; i++)); do
USER=${row[$i]}
i=$i+1
PASS=${row[$i]}
i=$i+1
expect -c "spawn adduser $USER; expect password; send $PASS\r; expect password; send $PASS\r; expect password"
done
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!
Macht ohne Haftung funktioniert nicht!
Re: übergabe von variablen (expect)
Recht herzlichen dank für die Hilfe!
hab nach ein wenig ausprobieren und tüftel hinbekommen. und hier noch ma der vollständige quellcode
hab nach ein wenig ausprobieren und tüftel hinbekommen. und hier noch ma der vollständige quellcode
Code: Alles auswählen
#!/bin/bash
PATH=/usr/sbin:/usr/bin;
nr=1
echo Bitte geben sie die einzulesende Datei an
read eingabe
file=$eingabe
while read line;
do
row[$nr]=$line
let nr=$nr+1
done < $file
for ((i=1; i<$nr; i++)) do
USER=${row[$i]}
let i=$i+1
PASS=${row[$i]}
expect -c "spawn /usr/sbin/adduser $USER
expect Enter:; send $PASS\r;
expect Retype:; send $PASS\r;
expect Name; send \r;
expect Raumnummer; send \r;
expect Telefon; send \r;
expect Telefon; send \r;
expect Sonstiges; send \r;
expect Sind; send j\r;
expect"
done