NetSend Python Programm

Du hast eine Idee für ein Projekt?
Gast

kann mir jemand helfen?ich bräuchte ein python programm,mit dem ich über entsend nachrichten verschicken kann...msdos eingabeaufforderung ist gesperrt...
bitte hilfe![/python]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ach, du hast auch den Spass herausgefunden?

Code: Alles auswählen

import os
os.system('net send RECHNER NACHRICHT')
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

thx schonmal...aber ich bin auf dem gebiet(programmiern) nicht so der crack....könnt mir jemand nen kompletten code schreiben?wär sehr dankbar!!!
momo
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Du solltest dann doch am besten den Code selbst schreiben. Damit lernst du es auch.

Dieses Forum dient zum Erfahrungsaustausch und nicht zur "Auftragsprogrammierung".
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Anonymous hat geschrieben:thx schonmal...aber ich bin auf dem gebiet(programmiern) nicht so der crack....könnt mir jemand nen kompletten code schreiben?
Das war theoretisch schon ein kompletter Code.
Aber gut, noch etwas ausführlicher:

Code: Alles auswählen

import os
rechner = raw_input("Rechnername: ")
nachricht = raw_input("Nachricht: ")
os.system('net send ' + rechner + ' ' + nachricht)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Gibt es mit Python eine Möglichkeit, einen Zeilenwechsel in die Nachricht zu bekommen? Sonst kann man die Nachricht nicht übersichtlich formatiert darstellen. Ich habe hier gelesen, das geht mit Strg-T. Aber wie kann das in Python umgesetzt werden?

Es wäre bestimmt auch ganz nett, die hier beschriebene Funktion in Python nachzubauen. Leider kann ich kein Delphi.

Stephan
BlackJack

Du könntest Die Nachricht zeilenweise in einer Schleife einlesen, die man mit einer Leerzeile oder eine speziellen Eingabe beenden muss.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Sobald in der Nachricht ein Zeilenende (\n) enthalten ist, wird an dieser Stelle die Nachricht beim Senden abgeschnitten und nur der erste Teil übermittelt. Gibt es eine Möglichkeit, das Zeilenende als hex (oder auch anders)anzugeben, damit es beim Empfänger richtig interpretiert wird?

Stephan
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Du kannst ja im Python-Programm ein bestimmtes Zeichen durch Zeilenumbrüche ersetzen:

Code: Alles auswählen

import os
rechner = raw_input("Rechnername: ")
nachricht = raw_input("Nachricht: ")
os.system('net send ' + rechner + ' ' + nachricht.replace("#", "\n"))
edit:
Wobei ich nicht weiß, wie os.system auf die Zeilenumbrüche reagiert...
vielleicht wäre es besser das so zu machen:

Code: Alles auswählen

os.system('net send %s "%s"' % (rechner, nachricht.replace("#", "\n")))
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Ja, aber damit enthält die Nachricht ein \n und wird abgeschnitten
henning
User
Beiträge: 274
Registriert: Dienstag 26. Juli 2005, 18:37

Achso, sorry, hab grad erst das Problem verstanden...
Ich würde mal tippen, dass Strg+T unter (Win)Do(w)s eine bestimme ASCII-Sequenz erzeugt, du musst nur noch rausfinden, welche ,-)
Johi
User
Beiträge: 22
Registriert: Sonntag 21. November 2004, 20:08

wenn man win32net benutzt kann man sogar noch den absender angeben ;)

Code: Alles auswählen

import win32net
win32net.NetMessageBufferSend(domain, userName, fromName, message)
was genau man als argumente übergeben muss, weiß ich leider nicht. vielleicht weiß da ja ein anderer bescheid.

edit: zu der zeilenfrage: ist es u.U. möglich, dass man maximal nur eine zeile schicken kann?
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Danke für den Tipp.
Es muss aber irgendwie möglich sein, einen Zeilenwechsel zu senden. Es gibt dafür Beispiele im Internet (nur eben nicht für Python). Ich habe auch schon probiert, die Nachricht in eine Datei zu speichern, binär auszulesen und zu senden. Leider auch ohne Erfolg.

Stephan
BlackJack

Das Problem wird die Shell, also unter Windows wohl cmd.exe oder command.com sein, die ein Zeilenende als Ende der Eingabe interpretiert. Versuchs mal ohne den Umweg über eine Shell z.B. mit `os.spawnvp()`. Da kannst Du die Argumente direkt an das Program übergeben.
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Hallo,

ich habe es jetzt mal mit win32net.NetMessageBufferSend getestet. Damit können wunderbar die Zeilenwechsel gesendet werden. Damit kann ich endlich eine formatierte Ausgabe erzeugen. :D
Als Absender kann ich aber nur meinen eigenen Namen angeben. Sonst müsste man irgendetwas mit dem Mailslot machen - aber davon habe ich keinen Schimmer. :?

Stephan
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hmm, du könntest das Programm doch ins Showcase posten, klingt nach einer interessanten Anwendung von pywin32 :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Mawilo
User
Beiträge: 452
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Mmh, das Prgramm hat viele Userbezogene Aspekte - ist also nur bedingt allgemeintauglich.
Ich kann aber die Funktionalität des Sendens erläutern.

Code: Alles auswählen

import win32net

alias = 'nobody'
empfanger = 'empfaenger' # Name bzw. Rechnername des Empfängers angeben

win32net.NetMessageNameAdd('', '%s'%alias)
win32net.NetMessageBufferSend('','%s'%empfanger,'%s'%alias,'test\ntest')
win32net.NetMessageNameDel('', '%s'%alias)
Wenn man eine Nachricht nur mit NetMessageBufferSend im Netzwerk verschickt, so muss man zwingend einen auf dem Server(Rechner) vorhandenen Usernamen als Absender angeben. Mit der Funktion NetMessageNameAdd wird dem Rechner ein neuer Name zugefügt. Dieser Name ist frei wählbar (in meinem Beispiel 'nobody') :wink: . Nach dem Versenden der Nachricht wird der Alias-Name wieder vom Rechner mit der Funktion NetMessageNameDel entfernt.

Ansonsten habe ich herum noch ein GUI und eine Empfängerverwaltung (als Listbox, aus der man mit Doppelklick die Namen auswählen kann)gebastelt. Die Nachrichten werden in einem ScrolledText eingegeben. Zeilenumbrüche aus dem Textfeld werden übermittelt und beim Empfänger auch angezeigt. Weiterhin habe ich z.B. eine Funktion eingebaut, dass verschiedene User zum Geburtstag eine Mitteilung bekommen. Der Fantasie sind dabei keine Grenzen gesetzt. :D

Stephan
sonium
User
Beiträge: 66
Registriert: Mittwoch 27. Oktober 2004, 21:04

als ich noch zu Schule ging (damals als die Gummistiefel noch auch Holz waren) haben wir das so gelöst:

netsendbomb.bat

Code: Alles auswählen

:start
net send 192.168.0.xx All your base are belong to us!
goto start
- http://bash.org/?400459
oscar15
User
Beiträge: 67
Registriert: Freitag 3. März 2006, 15:43
Wohnort: Kölle

Dabei hab ich leider folgendes Problem:

ImportError: No module named win32net
Antworten