rsync ssh und Passwort Eingabe
@BlackJack
Seit der Fukushima-Katastrophe wird Ignoranz in feldmaus gemessen. Die uebliche Hintergrundignoranz liegt bei wenigen milli-feldmaus. Doch das Vollpfostometer zeigt in diesem Thread Werte von bis zu einem feldmaus! Das sind Bereiche, die bis dato nur am grossen Retardotron im Hirnforschungszentrum Juelich gemessen wurden. Vielleicht sollte man mal die Wissenschaftler hierauf aufmerksam machen...
Seit der Fukushima-Katastrophe wird Ignoranz in feldmaus gemessen. Die uebliche Hintergrundignoranz liegt bei wenigen milli-feldmaus. Doch das Vollpfostometer zeigt in diesem Thread Werte von bis zu einem feldmaus! Das sind Bereiche, die bis dato nur am grossen Retardotron im Hirnforschungszentrum Juelich gemessen wurden. Vielleicht sollte man mal die Wissenschaftler hierauf aufmerksam machen...
You made my Daydeets hat geschrieben:
Seit der Fukushima-Katastrophe wird Ignoranz in feldmaus gemessen. Die uebliche Hintergrundignoranz liegt bei wenigen milli-feldmaus. Doch das Vollpfostometer zeigt in diesem Thread Werte von bis zu einem feldmaus! Das sind Bereiche, die bis dato nur am grossen Retardotron im Hirnforschungszentrum Juelich gemessen wurden. Vielleicht sollte man mal die Wissenschaftler hierauf aufmerksam machen...
Gruß...busfahrer
Alles wird gut ;-)
Mit Verlaub, ich finde diesen Beitrag entwürdigend.deets hat geschrieben:@BlackJack
Seit der Fukushima-Katastrophe wird Ignoranz in feldmaus gemessen. Die uebliche Hintergrundignoranz liegt bei wenigen milli-feldmaus. Doch das Vollpfostometer zeigt in diesem Thread Werte von bis zu einem feldmaus! Das sind Bereiche, die bis dato nur am grossen Retardotron im Hirnforschungszentrum Juelich gemessen wurden. Vielleicht sollte man mal die Wissenschaftler hierauf aufmerksam machen...
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also ich finde ein allein stehender Satz a la "Ignoranz wird in 'feldmaus' gemessen" wäre schon lustig gewesen. Aber die Verknüpfung mit einer Katastrophe, die Menschenleben massiv negativ beinflusst hat und noch beeinflussen wird, sowie die Benutzung von Schimpförtern entwerten die Prise Humor und verkehrt diese imho auch ins Gegenteil.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
@deets
Also ich habe kein Problem damit, aber mach dich drauf gefasst das Du von mir dann auch mal ein Konter bekommst, nicht das Du nachher heulst. Außerdem frage ich mich schon die ganze Zeit warum Du mich für ignorant hältst? Ich bin nicht ignorant, sondern ich verstehe halt einiges nicht so gut wie BlackJack oder Leonidas. Ich habe alles was BlackJack vorgeschlagen hatte umgesetzt, sind ja auch gute Ideen. Ich verstehe Ihn halt nicht immer auf Anhieb. Die Jungs hier wandern nun mal in anderen Spheren. Und deine Idee mit pexpect habe ich auch eingebaut, nur wollte ich einiges geklärt haben.
Grüße Markus
Also ich habe kein Problem damit, aber mach dich drauf gefasst das Du von mir dann auch mal ein Konter bekommst, nicht das Du nachher heulst. Außerdem frage ich mich schon die ganze Zeit warum Du mich für ignorant hältst? Ich bin nicht ignorant, sondern ich verstehe halt einiges nicht so gut wie BlackJack oder Leonidas. Ich habe alles was BlackJack vorgeschlagen hatte umgesetzt, sind ja auch gute Ideen. Ich verstehe Ihn halt nicht immer auf Anhieb. Die Jungs hier wandern nun mal in anderen Spheren. Und deine Idee mit pexpect habe ich auch eingebaut, nur wollte ich einiges geklärt haben.
Grüße Markus
@feldmaus
Ueber meinen Traenenfluss reden wir dann, wenn's so weit ist. Da bin ich recht entspannt.
Die Ignoranz zeigt sich in so diversen Dingen:
- der Tatsache, dass du pexpect empfohlen bekamst, aber dauerhaft ignoriert hast, bis es gar nicht mehr anders ging.
- dass du selbst zugibst, keine Ahnung von Sicherheit zu haben, aber im gleichen Atemzug behauptest, die *sichereren* Alternativen zu einem im Skript gespeicherten Klartextpasswort waeren *unsicherer*.
- das du in aehnlich langwierigen Diskussionen in einem anderen Thread davon ueberzeugt worden bist, dass es besser ist, commandos mit einer Liste statt einem muehselig escapeden String aufzurufen - nur, um dann wieder mit pexpect bei Null anzufangen.
In der Summe also das bitten um Rat, aber ignorieren desselben. Das ist in meinem Buch unter 'Ignoranz' vermerkt.
Ueber meinen Traenenfluss reden wir dann, wenn's so weit ist. Da bin ich recht entspannt.
Die Ignoranz zeigt sich in so diversen Dingen:
- der Tatsache, dass du pexpect empfohlen bekamst, aber dauerhaft ignoriert hast, bis es gar nicht mehr anders ging.
- dass du selbst zugibst, keine Ahnung von Sicherheit zu haben, aber im gleichen Atemzug behauptest, die *sichereren* Alternativen zu einem im Skript gespeicherten Klartextpasswort waeren *unsicherer*.
- das du in aehnlich langwierigen Diskussionen in einem anderen Thread davon ueberzeugt worden bist, dass es besser ist, commandos mit einer Liste statt einem muehselig escapeden String aufzurufen - nur, um dann wieder mit pexpect bei Null anzufangen.
In der Summe also das bitten um Rat, aber ignorieren desselben. Das ist in meinem Buch unter 'Ignoranz' vermerkt.
Also ich habe gerade das Problem das irgendwo in meiner Zeichenkette ein Fehler steckt. Hier der Code:
Als Fehlermeldung bekomme ich bei einem Kommando mit vorhandem exclude:
Ohne Exclude bekomme ich z.b.:
Hat Jemand eine Idee?
Grüße Markus
Code: Alles auswählen
def rsync ():
exclude_pre=katalog[eintrag]['Exclude'][0]+' '
exclude_post=katalog[eintrag]['Exclude'][1]+' '
if antwort2 == ('s' or 'S') :
try:
source=katalog[eintrag]['Client'][0]+BENUTZER+katalog[eintrag]['Client'][1]+' '
target=BENUTZER+katalog[eintrag]['Server'][0]+BENUTZER+katalog[eintrag]['Server'][1]
print 'source ist: '+source
print 'target ist: '+target
(command_output, exitstatus)=pexpect.run(['rsync ',
'-e ',
'\"ssh -l '+BENUTZER+'\" ',
'-a ',
'--delete-after ',
'--stats ',
'--progress ',
exclude_pre+exclude_post,
source,
target],
withexitstatus=1, events={'(?i)password':benutzer_passwoerter[BENUTZER]+'\n'})
print command_output
except Exception, e:
print 'Fehler: '+str(e)
Code: Alles auswählen
Fehler: The command was not found or was not executable: rsync -e "ssh -l markus" -a --delete-after --stats --progress --exclude Machines/Standard/Snapshots/* /home/markus/.VirtualBox/ markus@feld-server:/home/markus/VirtualBox@feld-bertlap/.
Code: Alles auswählen
Fehler: The command was not found or was not executable: rsync -e "ssh -l markus" -a --delete-after --stats --progress .
Grüße Markus
@feldmaus: Sieht so aus als wenn man nur bei `pexpect.spawn()` die Argumente als Liste übergeben kann aber nicht bei `pexpect.run()`. Das ist doof.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Das Snippet
macht nicht ganz bestimmt nicht das was du willst:
Alternativen:
(Und natuerlich das schnoede `answer == 's' or answer == 'S'`)
Code: Alles auswählen
if antwort2 == ('s' or 'S') :
Code: Alles auswählen
In [1]: 's' or 'S'
Out[1]: 's'
In [2]: acceptable = 's' or 'S'
In [3]: answer = 's'
In [4]: answer == acceptable
Out[4]: True
In [5]: answer = 'S'
In [6]: answer == acceptable
Out[6]: False
Code: Alles auswählen
In [7]: acceptable = ('s', 'S')
In [8]: answer in acceptable
Out[8]: True
In [9]: answer = 's'
In [10]: answer in acceptable
Out[10]: True
In [11]: acceptable = 'sS'
In [12]: answer in acceptable
Out[12]: True
In [13]: answer = 'S'
In [14]: answer in acceptable
Out[14]: True
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Also in der Doku steht ein Beispiel:BlackJack hat geschrieben:@feldmaus: Sieht so aus als wenn man nur bei `pexpect.spawn()` die Argumente als Liste übergeben kann aber nicht bei `pexpect.run()`. Das ist doof.
Code: Alles auswählen
child = pexpect.spawn ('ls', ['-latr', '/tmp'])
Irgendwie kennt rsync keine Option --exclude, sondern nur --exclude= mit dem Gleichheitszeichen am Ende, nur dann muss das Argument direkt nach dem Gleichheitszeichen beginnen, ansonsten erkennt er es als Quelle. Hat Jemand eine Idee?
Grüße Markus
Grüße Markus
@feldmaus: Was für ein ``rsync`` verwendest Du denn da? Das geht auch ohne das ``=``.
Also ich nutze rsync Version
Also in der manpage steht ein Beispiel ohne "=", aber wenn ich es ohne "=" ausführe bekomme ich die Meldung
Und mit dem "=" versucht er mein Exclude-Argument als Source zu verwenden
Bei diesem Beispiel hat meine Quelle keine Auszuschliessenden, trotzdem verwende ich die Option "--exclude[=]", da ich mein Programm sonst auch durch eine Fallunterscheidung unnötig verkomplizieren würde. Wie auch immer, die Quellen mit Auszuschliesenden funktionieren so zumindest nicht.
Was ich nicht verstehe ist, warum er mein /home/markus/bin/ Verzeichnis nicht findet. Und von markus@server:/home/markus/bin/ (meinem Ziel-Verzeichnis) wurde hier nichts erwähnt.
Code: Alles auswählen
rsync version 3.0.7 protocol version 30
Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes
Code: Alles auswählen
rsync: --exclude : unknown option
Code: Alles auswählen
building file list ...
rsync: link_stat "/home/markus/bin/__ThereIsNothingToExcludeInThisSourceButINeedAnEmptyExclude__ " failed: No such file or directory (2)
rsync: link_stat "/home/markus/bin/ " failed: No such file or directory (2)
0 files to consider
Was ich nicht verstehe ist, warum er mein /home/markus/bin/ Verzeichnis nicht findet. Und von markus@server:/home/markus/bin/ (meinem Ziel-Verzeichnis) wurde hier nichts erwähnt.
@feldmaus: Du solltest Dich wirklich ganz dringend endlich mal damit beschäftigen wie die Übergabe von Argumenten funktioniert. Auf C-Ebene. Und was zum Beispiel eine Shell alles macht um von einer Zeile in der Shell auf eine Argumentliste auf C-Ebene zu bekommen. Genau da machst Du nämlich schon wieder Fehler.
Da steht nämlich nicht, dass ``rsync`` die Option '--exclude' nicht kennt, sondern dass es die Option '--exclude ' nicht kennt. Da ist ein Leerzeichen was da nicht hin gehört:
Da steht nämlich nicht, dass ``rsync`` die Option '--exclude' nicht kennt, sondern dass es die Option '--exclude ' nicht kennt. Da ist ein Leerzeichen was da nicht hin gehört:
Code: Alles auswählen
bj@s8n:~$ rsync '--exclude'
rsync: --exclude: missing argument
rsync error: syntax or usage error (code 1) at main.c(1443) [client=3.0.7]
bj@s8n:~$ rsync '--exclude '
rsync: --exclude : unknown option
rsync error: syntax or usage error (code 1) at main.c(1443) [client=3.0.7]
Es funktioniert
Und hier der Code mit ungekürzten Leerzeichen
Nach erfolgreichem Beenden von dem rsync Befehl springt er trotzdem noch in die while-Schleife. Der Datenstrom müsste doch zu Ende sein, dann dürfte er doch auch nicht mehr in meine Schleife springen, oder interpretiere ich den Befehl child.expect(pexpect.EOF) falsch?
Mich mögen die Leerzeichen halt besonders gerne Es funktioniert Es kommen aber noch einige andere Funktionen mit rein z.b. falls ein falsches Passwort eingegeben wurde.BlackJack hat geschrieben:@feldmaus: Du solltest Dich wirklich ganz dringend endlich mal damit beschäftigen wie die Übergabe von Argumenten funktioniert. Auf C-Ebene. Und was zum Beispiel eine Shell alles macht um von einer Zeile in der Shell auf eine Argumentliste auf C-Ebene zu bekommen. Genau da machst Du nämlich schon wieder Fehler.
Und hier der Code mit ungekürzten Leerzeichen
Code: Alles auswählen
PASSWORT=raw_input('Bitte Passwort fuer '+BENUTZER+' eingeben:')
benutzer_passwoerter[BENUTZER]=PASSWORT
child=rsync()
child.logfile = sys.stdout
child.expect('password:', timeout=3)
child.logfile = sys.stdout
child.sendline(PASSWORT)
child.logfile = sys.stdout
while not child.expect(pexpect.EOF):
PASSWORT=raw_input('Falsches Passwort!\nBitte Passwort fuer '+BENUTZER+' eingeben:')
benutzer_passwoerter[BENUTZER]=PASSWORT
child.expect('password:', timeout=3)
child.sendline(PASSWORT)