expect mit variablen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Matthias27061985
Beiträge: 22
Registriert: 10.02.2007 09:39:14

expect mit variablen

Beitrag von Matthias27061985 » 11.02.2007 11:46:29

Hallo zusammen!

Ich hab mir vor kurzem ein skript geschrieben mit dem datein von einem server zum anderen kopiert werden.
Hab dies mittels scp gemacht. Damit ich das Passwort nicht eingeben muss hab ich mich entschlossen das
ganze mit expect zu machen.

Nur leider kann ich nun irgendwie keine Variabeln mehr übergeben.
Das heist ich muss mein eigentliches copierskript statt mit sh skriptname
mit expect skriptname aufrufen. Doch dann mekert er bei jeder Variable
die ich einfüge.

Was kann man denn dagegen tun?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 11.02.2007 14:11:41

Willkommen im Forum!
Matthias27061985 hat geschrieben: Damit ich das Passwort nicht eingeben muss hab ich mich entschlossen das
ganze mit expect zu machen.
Ist dieser Entschluß unumstößlich ? SSH bringt ja selber einige Möglichkeiten mit. Wenn du den SSH-Agent verwendest, brauchst du die Passphrase nur einmalig eingeben. Wenn das auch noch "zu oft" ist, kannst du dir auch eine Key ohne Passphrase erstellen.
Dann gibt es auch noch diverse Pakete, wie z.B "sshpass", die im Prinzip das gleiche ermöglichen, wie "expect" nur eben speziell für ssh zugeschnitten und dadurch einfacher und besser dieses Problem lösen.

Code: Alles auswählen

sshpass -p passwort scriptname [args..]
Gruß
gms

Matthias27061985
Beiträge: 22
Registriert: 10.02.2007 09:39:14

Beitrag von Matthias27061985 » 12.02.2007 12:01:03

danke für die Schnelle Antwort schon mal.
Nur irgendwie kann ich das paket sshpass nicht installieren.
Das braucht eine neue Version von der libc
und die ist unstable und ich hab aber die stable version drauf.
Wenn ich die dann installieren will gibt das nich... :(

gibt es eine andere möglichkeit sshpass zu installieren?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 12.02.2007 14:48:13

sshpass gibts nur in Etch/Testing bzw Sid/Unstable, aber dieses Paket kannst du leicht selber bauen:

Vorbereitung:

Code: Alles auswählen

root@gms4:~/tmp# apt-get install gcc libc6-dev
root@gms4:~/tmp# wget http://ftp.debian.org/debian/pool/main/s/sshpass/sshpass_1.00.orig.tar.gz
root@gms4:~/tmp# wget http://ftp.debian.org/debian/pool/main/s/sshpass/sshpass_1.00-2.diff.gz
root@gms4:~/tmp# wget http://ftp.debian.org/debian/pool/main/s/sshpass/sshpass_1.00-2.dsc
root@gms4:~/tmp# tar -xzvf sshpass_1.00.orig.tar.gz
root@gms4:~/tmp# cd sshpass-1.00/
root@gms4:~/tmp/sshpass-1.00# zcat ../sshpass_1.00-2.diff.gz | patch -p1
das Programm ohne Umweg über Debianpaket erzeugen:

Code: Alles auswählen

root@gms4:~/tmp/sshpass-1.00# ./configure
root@gms4:~/tmp/sshpass-1.00# make
gcc -DHAVE_CONFIG_H -I. -I. -I.     -g -O2 -c main.c
gcc  -g -O2  -o sshpass  main.o
root@gms4:~/tmp/sshpass-1.00# ./sshpass -V
sshpass 1.00 (C) 2006 Lingnu Open Source Consulting Ltd.
This program is free software, and can be distributed under the terms of the GPL
See the COPYING file for more information.
ein Debianpaket erzeugen und anschließend installieren:

Code: Alles auswählen

root@gms4:~/tmp/sshpass-1.00# chmod +x debian/rules
root@gms4:~/tmp/sshpass-1.00# dpkg-buildpackage -rfakeroot -us -uc
root@gms4:~/tmp/sshpass-1.00# cd ..
root@gms4:~/tmp# dpkg -i sshpass_1.00-2_i386.deb
Gruß
gms

Matthias27061985
Beiträge: 22
Registriert: 10.02.2007 09:39:14

Beitrag von Matthias27061985 » 12.02.2007 15:20:53

Ich hab das mal ausprobiert.
nur leider kommt nachwievor:

Code: Alles auswählen

root:/# dpkg -i sshpass_1.00-2_i386.deb
Wähle vormals abgewähltes Paket sshpass.
(Lese Datenbank ... 113207 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke sshpass (aus sshpass_1.00-2_i386.deb) ...
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von sshpass:
 sshpass hängt ab von libc6 (>= 2.3.6-6); aber:
  Version von libc6 auf dem System ist 2.3.2.ds1-22sarge4.
dpkg: Fehler beim Bearbeiten von sshpass (--install):
 Abhängigkeitsprobleme - lasse es unkonfiguriert
Fehler traten auf beim Bearbeiten von:
 sshpass
davor wollte ich das lib-paket installieren, da kam die Meldung:

Code: Alles auswählen

root:/# apt-get install gcc libc6-dev
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
gcc ist schon die neueste Version.
libc6-dev ist schon die neueste Version.
Sie möchten wahrscheinlich »apt-get -f install« aufrufen, um dies zu korrigieren:
Die folgenden Pakete haben nichterfüllte Abhängigkeiten:
  sshpass: Hängt ab: libc6 (>= 2.3.6-6) aber 2.3.2.ds1-22sarge4 soll installiert werden
E: Nichterfüllte Abhängigkeiten. Versuchen Sie »apt-get -f install« ohne jeglich Pakete (oder geben Sie eine Lösung an).

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 12.02.2007 16:44:02

auf die Abhängigkeit habe ich jetzt vergessen,

Du mußt die Datei "debian/control" im Verzeichnis "ssh-pass-1.00" verändern und
folgende Zeile:

Code: Alles auswählen

Depends: ${shlibs:Depends}, ssh
durch diese Zeile ersetzen

Code: Alles auswählen

Depends: libc6 (>= 2.3.2), ssh
(achte aber bitte darauf, daß du sonst keine Änderungen, wie z.B Leerzeilen o.ä hineinbringst)
danach nochmals das Paket mit dem Kommando "dpkg-buildpackage -rfakeroot -us -uc" bauen

Matthias27061985
Beiträge: 22
Registriert: 10.02.2007 09:39:14

Beitrag von Matthias27061985 » 12.02.2007 17:18:34

hmm, ich hab das nun geändert und wolllte das neue packet erstellen, nun macht er es aber nicht mehr...

Code: Alles auswählen

root:~/sshpass-1.00# dpkg-buildpackage -rfakeroot -us -uc
dpkg-buildpackage: source package is sshpass
dpkg-buildpackage: source version is 1.00-2
dpkg-buildpackage: source maintainer is Shachar Shemesh <shachar@debian.org>
dpkg-buildpackage: host architecture is i386
dpkg-checkbuilddeps: Unmet build dependencies: debhelper (>= 4.0.0) autotools-dev
dpkg-buildpackage: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: (Use -d flag to override.)
liegt das an der änderung von der datei?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 12.02.2007 17:34:31

Matthias27061985 hat geschrieben:liegt das an der änderung von der datei?
befürchte ja, nachdem es vorher funktioniert hat, sollten die "build dependencies" schon gekärt sein.
poste einmal die Datei ( auf NoPaste)

Matthias27061985
Beiträge: 22
Registriert: 10.02.2007 09:39:14

Beitrag von Matthias27061985 » 14.02.2007 17:21:58

was ist noPaste?

Code: Alles auswählen

Source: sshpass
Section: utils
Priority: extra
Maintainer: Shachar Shemesh <shachar@debian.org>
Build-Depends: debhelper (>= 4.0.0), autotools-dev
Standards-Version: 3.7.2

Package: sshpass
Architecture: any
Depends: libc6 (>= 2.3.2), ssh
Description: Non-interactive ssh password authentication
 SSH's (secure shell) most common authentication mode is called "interactive
 keyboard password authentication", so called both because it is typically
 done via keyboard, and because openssh takes active measures to make sure
 that the password is, indeed, typed interactively by the keyboard. Sometimes,
 however, it is necessary to fool ssh into accepting an interactive password
 non-interactively. This is where sshpass comes in.
 .
 SECURITY NOTE: There is a reason openssh insists that passwords be typed
 interactively. Passwords are harder to store securely and to pass around
 securely between programs. If you have not looked into solving your needs
 using SSH's "public key authentication", perhaps in conjunction with the ssh
 agent (RTFM ssh-add), please do so before being tempted into using this
 package.
Source: sshpass
Section: utils
Priority: extra
Maintainer: Shachar Shemesh <shachar@debian.org>
Build-Depends: debhelper (>= 4.0.0), autotools-dev
Standards-Version: 3.7.2

Package: sshpass
Architecture: any
Depends: libc6 (>= 2.3.2), ssh
Description: Non-interactive ssh password authentication
 SSH's (secure shell) most common authentication mode is called "interactive
 keyboard password authentication", so called both because it is typically
 done via keyboard, and because openssh takes active measures to make sure
 that the password is, indeed, typed interactively by the keyboard. Sometimes,
 however, it is necessary to fool ssh into accepting an interactive password
 non-interactively. This is where sshpass comes in.
 .
 SECURITY NOTE: There is a reason openssh insists that passwords be typed
 interactively. Passwords are harder to store securely and to pass around
 securely between programs. If you have not looked into solving your needs
 using SSH's "public key authentication", perhaps in conjunction with the ssh
 agent (RTFM ssh-add), please do so before being tempted into using this
 package.

Benutzeravatar
GoKi
Beiträge: 2068
Registriert: 04.07.2003 23:08:56
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von GoKi » 14.02.2007 18:08:12

Matthias27061985 hat geschrieben:was ist noPaste?
http://nopaste.debianforum.de/
Punkt 4 der wichtigen Hinweise, die Du dir vor dem schreiben eines Beitrages durchgelesen hast. :P
MfG GoKi
:wq

Antworten