Bild an einen Rechner im Netzwerk schicken

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Leute,

    kurz zu meinem Programm welches ich schreiben möchte:
    Ein Bild wird mit der Pi-Cam aufgenommen --> abgespeichert und soll dann an einen PC im Netzwerk gesendet werden.
    Das Bild schießen etc. ist automatisiert und funktioniert auch.

    Jetzt habe ich etwas von den Shutil Funktionen gelesen.

    bis jetz habe ich:
    shutil.copy('bild_{}.jpg'.format(counter),'bild_copy_{}.jpg'.format(counter))
    shutil.move......

    So und da haperts. Ich weiß jetzt nicht wie ich das Bild auf einen anderen PC verschieben kann.
    Geht das überhaupt ohne weiteres?
    Stichworte die ich jetzt auch schon gelesen habe waren: Socket Verbindung und Scapy (weiß nicht ob das richtig ist)

    Wäre stark wenn Ihr mir helfen könntet.

    Gruß Techniker2015

    Einmal editiert, zuletzt von Techniker2015 (4. März 2015 um 13:12)

  • Hallo Techniker2015,


    Stichworte die ich jetzt auch schon gelesen habe waren: Socket Verbindung und Scapy (weiß nicht ob das richtig ist)

    na, wie mag das Stichwort doch noch geheißen haben? :s

    Ich kenne das Linux-Kommando [font="Courier"]scp[/font] (secure copy) und das leistet mir beim Kopieren innerhalb eines Netzwerkes echt gute Dienste. Egal, ob ich Quellcode, Bilder oder Programme kopiere.

    Code
    scp user@IP.des.Rechners_mit_dem.Originalbild:/Verzeichnis/das/zum/Bild/führt/Bild user@IP.des_Rechners_auf_dem.das_bild_kopiert_werden_soll:/Verzeichnis/in/das/das/Bild/gespeichert/werden/soll/.

    Das Ganze hübsch in eine Pipe gepackt, funktioniert das in jeder Programmiersprache.

    Da brauchst Du kein Socket, kein SCapy und kein weiteres Util-Gedöns, das sich anscheinend hartnäckig sträubt, bedient werden zu wollen.


    Einfach nur grundlegende Linux-Sachen führen zum Ziel.


    Beste Grüße

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (4. März 2015 um 13:32)

  • Erstmal Danke für die schnellen Antworten :)
    Also der "Empfänger" ist ein Windowsrechner.

    Andreas.
    Die Lösung mit scp sieht schonmal nett aus. Aber ist es wirklich so einfach? :D

    Ich habe jetzt mal folgendes eingegeben:

    scp 0.0.0.0 :/home/pi'bild_{}.jpg'.format(counter), 0.0.0.0 :/C:/Users/MeinName/Desktop

    Bis zum Rot geschriebenen unterriegelt mir mein Programm den Ausdruck.
    Wenn ich jetzt noch ein @root davor funktioniert es auch nicht.
    Wo liegt der Fehler?

    :danke_ATDE:

    edit sagt: statt 0.0.0.0 habe ich natürlich die jeweilige richtige ip genommen :)

    Einmal editiert, zuletzt von Techniker2015 (4. März 2015 um 14:48)

  • Also dass es mit scp nicht funktioniert habe ich jetzt auch herausgefunden :)

    also ich habe jetzt zuerst ein Ordner im mount verzeichnis erstellt. Dieser heißt "test".
    (mit $mkdir /mnt/test)

    Dann habe ich versucht die Windowsfreigabe im Pi zu mounten:

    --> sudo mount -t cifs -o guest "//C:/Users/Public/share" /mnt/test
    --> Hier gibt mir das Terminal die Fehlermeldung: "mount error: could not resolve address for C:: Unknown error"

    Also habe ich gedacht ich muss vielleicht noch die IP dazu packen. Das sah dann folgendermaßen aus:

    --> sudo mount -t cifs -o guest 192.168.2.80"//C:/Users/Public/share" /mnt/test

    Hierbei gibt es jetzt keine Fehlermeldung. Es erscheint lediglich eine Liste mit mount Befehlen.

    Hat es funktioniert?

    Wie sollte jetzt mein cp Befehl aussehen damit ich die Datei an den Windows Rechner senden kann?

    Gruß Techniker2015

  • Hmm...
    Also ich habe es, genauso wie du es beschrieben hast, eingegeben.(Außer meinen Benutzernamen und Passwort).
    Aber es will einfach nicht funktionieren...
    Fehlermeldung ist:
    mount error(13): Permission denied
    Refer to the mount.cifs(8) manual page

    Habe mir das Handbuch natürlich angeschaut. Daraus werde ich aber auch nicht schlauer.

    Wenn ich mein Passwort auf dem Windows Rechner komplett rausnehme und dann auch in dem Befehl

    mount -t cifs //192.168.2.80/share -o username=WINDOWSUSERNAME,password=PASSWORTDESUSERS /mnt/test

    den Teil mit dem Passwort rausnehme (weil bei Windows ist ja keines mehr vorhanden), dann verlangt er, wenn ich auf enter gedrückt habe nun ein Passwort (obwohl es keines gibt)

    • Offizieller Beitrag

    Du musst natürlich sudo davor schreiben. Ich vergess das gern zu erwähnen, da ich nur als root arbeite.

    Code
    sudo mount -t cifs //192.168.2.80/share -o username=WINDOWSUSERNAME,password=PASSWORTDESUSERS /mnt/test

    Du brauchst (imho) einen User mit passwort, damit das Fehlerfrei klappt. Und es solte selbstverständlich sein, dass ein User an einem Rechner auch ein Passwort hat..

    Edit: Verschoben nach Netzwerk und deinen Post gelöscht...das war der gleiche wie über meiner Antwort

  • Ja dass ich das als Superuser ausführen muss weiß ich. Und ich habe das Ganze natürlich auch mit Passwort probiert. Hat aber auch nicht geklappt.

    Statt nur "share" habe ich auch natürlich das komplette Verzeichnis des Ordners angegeben.

    Eingegebener Code:
    sudo mount -t cifs //192.168.2.80/C:/Users/Name/Desktop/vdeshare -o username=Name,password=passwort /mnt/test

    Aktueller Fehler ist nun:
    Retrying with upper case share name
    mount error (6): No such device or address
    Refer to the mount.cifs(8) manual page

    Was mir jetzt auch noch nicht 100% klar ist, ist wie das Ergebnis dann eigentlich aussehen soll.

    Wenn ich jetzt auch meinen Raspberry einewn File mitels $sudo cp in /mnt/test schieben würde, dann erscheint dieser file auch auf meinem Windows Rechner im Ordner share? Ist das richtig?

    Gruß

  • kleine Aktualisierung:

    Es funktioniert mittlerweile :) Hatte es nun nach dieser Anleitung gemacht "http://raspberrypihq.com/how-to-share-a…a-raspberry-pi/".

    Eine weitere Frage hätte ich nun doch noch^^
    Ich möchte natürlich auch von meinem Windowsrechner aus Dateien in dem geteilten Ordner löschen. sodass diese logischerweise auch auf dem pi gelöscht sind.
    Eigentlich habe ich ja mit folgender Zeile: writeable=Yes
    doch alles Nötige vorgenommen, oder nicht?
    Weil Windows sagt nun: "Sie müssen die erforderlichen Berechtigungen von "Unix User\root" erhalten, um Änderungen an dieser Datei durchführen zu können.

    Liebe Grüße

    Liebe Grüße

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!