Shellscript/ smbclient Probleme

asg

push it, don´t hype
Hallo.

Hmm, mir ist eben aufgefallen das es gar keine Abteilung für Programmiersprachen gibt....
Aber zum Problem.

Habe ein Shellscript welches durch cron gestartet wird und sich via "smbclient" auf den Windowsclients einloggt um die Daten von deren freigegebener Partition zu ziehen, sprich ein backup. Gleiches läuft auch noch um erneuern der Virensignaturen auf den jeweiligen Clients.
Das Problem liegt in einer Zeile:
[...]
$smbclient //10.4.1.8/user -A auth -Tc backup_user.tar >> $backupdatenlog
[...]

Die Datei "auth" ist angelegt und enthält den Usenamen und das Passwort.
Leider kommt es bei dem Script dann zu folgener Fehlermeldung:
"added interface ip=10.2.1.167 bcast=10.2.1.255 nmask=255.255.255.0"
"ERROR: Unable to open credentials file!"

Die IP in der Fehlermeldung ist die IP des backupsservers auf dem das Script rennt.

Führe ich die obige Zeile manuell aus, funktioniert der login.

Auch wenn ich den usernamen und das Passwort direkt in die obige Zeile schreibe:
[...]
$smbclient //10.4.1.8/user -U username%password -Tc backup_user.tar >> $backupdatenlog
[...]
funktioniert der login und das script zieht sich die Daten.

Wo also zum Kuckuck liegt das Problem, mein Fehler, oder der heilige Gral, begraben?
 
ERROR: Unable to open credentials file!

Überprüfe doch mal bitte, warum er das File nicht öffnen kann.

- Läuft das Script unter dem gleichen Benutzer, mit dem Du den händischen Test ausführst?

- Ist das working directory das selbe wie beim händischen Test?

Zum testen kannst du das script ja auch mit "sh -x" ausführen um zu sehen was genau passiert.

Hope that helps...
 
Original geschrieben von current
- Läuft das Script unter dem gleichen Benutzer, mit dem Du den händischen Test ausführst?

Ja logisch.

- Ist das working directory das selbe wie beim händischen Test?

Auch hier, alles in bester Ordnung.

Zum testen kannst du das script ja auch mit "sh -x" ausführen um zu sehen was genau passiert.

Auch hier wird mir
"added interface ip=10.2.1.167 bcast=10.2.1.255 nmask=255.255.255.0"
"ERROR: Unable to open credentials file!"
entgegengeworfen.

Alles schon probiert und beachtet. Mir sagt dieser Fehler leider auch überhaupt nichts.
 
Original geschrieben von grunix

Auch hier wird mir
"added interface ip=10.2.1.167 bcast=10.2.1.255 nmask=255.255.255.0"
"ERROR: Unable to open credentials file!"
entgegengeworfen.

Alles schon probiert und beachtet. Mir sagt dieser Fehler leider auch überhaupt nichts.

Hi grunix

Ich habe zwar nicht so einen Script am laufen, doch der Begriff "credentials" kam mir irgendwie bekannt vor. Beim IMAP-RFC z.B. wird er auch benutzt, und zwar im folgenden Kontext (hier ein Ausschnitt):

-------------------------------------------------------------------------------

3.1. Not Authenticated State

In the not authenticated state, the client MUST supply
authentication credentials before most commands will be
permitted. This state is entered when a connection starts
unless the connection has been pre-authenticated.

-------------------------------------------------------------------------------

Analog auf deinen Sachverhalt übertragen, bedeutet die Fehlermeldung bei dir, dass du die Kommandos erst dann ausführen darfst, wenn du die angesprochene credentials-Datei ablieferst.


Warum sie allerdings nicht beim Eintippen verlangt wird, ist mir nicht bekannt.

-----------------------------

Hier der Link zum RFC: http://ftp3.ru.freebsd.org/pub/unix/network/mail/imap/rfc3501.txt

-----------------------------

Und in den Samba Spezifikationen steht Folgendes:

------------------------------------------------------------------------------

SMB_COM_SESSION_SETUP_ANDX Transmits the user's name and credentials
to the server for verification.
Successful server response has Uid field
set in SMB header used for subsequent
SMBs on behalf of this user.

------------------------------------------------------------------------------

Hier der Link dazu: http://ftp2.tw.freebsd.org/samba/specs/cifs6.txt

--------------

Ferner habe ich eine Post-Liste entdeckt, die sich mir einem ähnlichen Problem beschäftigt hatte: http://www.examnotes.net/article1013722.html

---------------

Und diese Seite dürfte dich besonders interessieren, denn in ihr steht, was alles eingerichtet werden muss, damit es mit Samba gut laufen kann (da wird auch über credentials gesprochen): http://www.rhce2b.com/clublinux/RHCE-27.shtml

---------------


Gruß

CW
 
Zuletzt bearbeitet:
Hi ColdWisdom.

Danke für die ganzen links, und die Erklärung zu "credentials".
Ich verstehe es aber immer noch nicht. Warum? Weil es ohne Probleme funktioniert wenn ich die Zeile manuell ausführe. Erst im Script kommt es zu den genannten Problemen.
Schade auch, hätte mir besser gefallen mit einer passwortdatei, aber es geht ja auch wenn ich den Usernamen und das Passwort direkt in mein script schreibe (was mir aber gar nicht gefällt...aber gut).
 
@CW: 'credentials' bedeutet einfach "Berechtigungsnachweis", ich gehe mal davon aus das das einfach das Passwortfile meint, also sein "auth" file.

@grunix: Bau doch mal in das script vor den Aufruf von smbclient ein "ls > /tmp/ls" ein und schau mal ob er wirklich im richtigen Verzeichnis steht - ansonsten fällt mir nämlich kein Grund ein warum das nicht gehen sollte.

Und ein bischen off-topic: Warum mountest Du das Filesystem von der Windowskiste nicht einfach als "smb" filesystem... ?
 
Original geschrieben von grunix



Ich verstehe es aber immer noch nicht. Warum? Weil es ohne Probleme funktioniert wenn ich die Zeile manuell ausführe. Erst im Script kommt es zu den genannten Problemen.

Es kann sein, dass es damit zu tun hat, dass wenn du dich eingeloggt hast, die credentials mit deinem Login schon eingerichtet werden (also übertragbar sind), während ein Script zum Zeitpunkt der Ausführung ja noch nicht "drin" ist, d.h. erst einmal sich einloggen muss.

Kann sein, dass es mit dem klassischen Henne-Ei-Problem zu tun hat.

Irgendwo habe ich noch einen LInk dazu gehabt, der davon handelte, dass credentials mit dem login-Befehl bearbeitet werden.

Ich poste den Link, wenn ich ihn gefunden habe.

Gruß

CW
 
Wenn ich manuell

smbclient //10.4.1.19/backup -A auth

ausführe, dann wird die Datei "auth" gelesen und ich bekomme den SMB prompt angezeigt.

Nichts anderes ist in dem Script.
Es hat keinerlei Verbindung zum client aufgebaut, erst wenn obige Zeile kommt, soll dies geschehen, aber genau da kommt dann der Abbruch. Zum Haare raufen.
 
Original geschrieben von grunix
Zum Haare raufen.

Nicht aufgeben ;)

Folgendes steht in der smbclient-Beschreibung:

-------------------------------------------------------


-U username[%pass]

Sets the SMB username or username and password. If %pass is not specified, The user will be prompted. The client will first check the USER environment variable, then the LOGNAME variable and if either exists, the string is uppercased. Anything in these variables following a '%' sign will be treated as the password. If these environment variables are not found, the username GUEST is used.

If the password is not included in these environment variables (using the %pass syntax), smbclient will look for a PASSWD environment variable from which to read the password.


A third option is to use a credentials file which contains the plaintext of the domain name, username and password. This option is mainly provided for scripts where the admin doesn't wish to pass the credentials on the command line or via environment variables. If this method is used, make certain that the permissions on the file restrict access from unwanted users. See the -A for more details.



Be cautious about including passwords in scripts or in the PASSWD environment variable. Also, on many systems the command line of a running process may be seen via the ps command to be safe always allow smbclient to prompt for a password and type it in directly.


-------------------------------------------------------

Hier der Link: http://de.samba.org/samba/docs/man/smbclient.1.html

Gruß

CW
 
Original geschrieben von current
@CW: 'credentials' bedeutet einfach "Berechtigungsnachweis", ich gehe mal davon aus das das einfach das Passwortfile meint, also sein "auth" file.

@Current

Danke für die Übersetzung.

Mir ging es darum, die Vorgänge zu erklären bzw. zu ergründen, denn wenn es so einfach wäre, dann gäbe es auch keine Probleme :)

Gruß

CW
 
Zuletzt bearbeitet:
Original geschrieben von current
Genau das ist ja mein Punkt, ich bin der Meinung das es so einfach ist. :-)

O.K. :D

Mal sehen, was grunix sagt. Es wäre echt fein, wenn es glatt gehen würde.

Gruß

CW
 
Zurück
Oben