übergabe von variablen (expect)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Frozone
Beiträge: 4
Registriert: 28.05.2008 17:11:24

übergabe von variablen (expect)

Beitrag von Frozone » 28.05.2008 18:07:06

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.

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: übergabe von variablen (expect)

Beitrag von detix » 28.05.2008 18:37:33

Du kannst das expect-script ganz sicher mit ins bash-script reinschreiben,
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" 
Wäre ein automatischer Telnet-Login zu meiner dbox,
wird auf deine Anforderung leicht anzupassen sein.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Frozone
Beiträge: 4
Registriert: 28.05.2008 17:11:24

Re: übergabe von variablen (expect)

Beitrag von Frozone » 28.05.2008 19:03:46

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

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: übergabe von variablen (expect)

Beitrag von detix » 28.05.2008 19:35:10

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?
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Frozone
Beiträge: 4
Registriert: 28.05.2008 17:11:24

Re: übergabe von variablen (expect)

Beitrag von Frozone » 28.05.2008 23:58:14

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
...

Benutzeravatar
detix
Beiträge: 1743
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: übergabe von variablen (expect)

Beitrag von detix » 29.05.2008 19:58:07

ohne Gewähr, 3 Zeilen gehören zusammen, aber nur zwei werden gebraucht?
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!

Frozone
Beiträge: 4
Registriert: 28.05.2008 17:11:24

Re: übergabe von variablen (expect)

Beitrag von Frozone » 30.05.2008 12:06:27

Recht herzlichen dank für die Hilfe! :mrgreen:
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

Antworten