Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Rechner Scan

Empfohlene Antworten

Veröffentlicht

Weiss jemand, wie ich in einem Netzwerk scannen kann, welcher Rechner eingeschaltet oder erreichbar ist und welcher nicht? Ich habe es so versucht (leider habe ich den Code nicht mehr):

String rechner="xxy";

while rechner !=null

{

1. rechner= lese aus der Liste x(in dieser Liste stehen alle Rechner die im Netzwerk sind.) den Rechner aus.

2. File test = "\\\\"+rechner+"\\c$\\autoexec.bat" <- Im Code hat die Syntax gestimmt, hat aber nicht funtioniert.

3. if rechner.exist etc. ab da war alles korrekt.

}

Nur die 2 hat nicht gestimmt (Cannot convert String to File oder so ähnlich), mir scheint, dass ich einem File die Rechner nicht dynamisch zuweisen kann. Weiss jemand Rat? Oder kann ich das anders machen?

PS: Die Syntax im Quellcode sieht natürlich nicht wie oben aus. :D

tach....

iss nur mal n ganz grober ansatz...

wir ham ma was geschrieben womit man so ala netsend nachrichten an netzwerkrechner verschicken konnte...

dabei ham wir die netzwerkbezeichnungen verwendet die die rechner ham... und nicht die IP

nun zu meinem ansatz....

wenn du ne liste (datei) erstellest aus der du die rechnernamen ausliest die im netzwerk sind.... und an jeden rechner ne art ping schickst.... und den returncode auswertest... also ob timeout oder nicht.... musstest du doch im endeffekt wissen welcher rechner an iss, oder??

stellt sich natürlich die frage ob man unter java pingen kann...

vergiss meinen eintrag.....

ich sollte aufmerksamer einträge lesen.... *bllll*

:eek:

aber ich könnte dir mal die sourcen von unserem Netsend schicken...

vielleicht hilft das ja mehr als meine wiederholung deiner lösung....

*ichglaubichbrauchnocheinenkaffee*

Macht nichts, geht mir manchmal auch so. :D

Aber ich bin Dir für jede Hilfe dankbar! Schick die Sourcen bitte an meine Mail Adresse in meinem Profil schicken, danke!

PS: Neija, ob das mit Ping gut wäre weiss ich nicht, ist nicht sehr schnell und bei ca. 700 Rechnern wird sich das Ganze auch ziemlich ziehen. Javas exist ist da um einiges schneller!

PPS: Wie mache ich das mit dem Returncode?

Okay habe das mal mit:

ping -n 1 -w 100

ausprobiert, ist doch recht flott ;) aber wie geht das mit den Returncodes ???

ich weiss nicht so genau ob es da sowas wie returncodes gibt....

aber irgent ne rückmeldung must du ja vom system bekommen....

wenn du mit java pingen kannst muss es auch ne methode geben die dir die rückmeldungen liefert....

so war das mit den returncodes gemeint..... bin im moment etwas COBOL geschädigt.... da arbeite ich nur mit sowas...

ähhhm....

du hast in deinem profil die email funktion deaktiviert....

wird so etwas schwierig mit dem mailen... ;)

Hmm, ich pinge mit dem W2k Shellbefehl ping und nicht mit java,

weisst du wie ich einen String in einer File Variable zuweisen kann, (siehe 1. Post)

Oh, na gut, dann schicke ich dir ne Mail

Original geschrieben von BMAS

Hmm, ich pinge mit dem W2k Shellbefehl ping und nicht mit java,

weisst du wie ich einen String in einer File Variable zuweisen kann, (siehe 1. Post)

String tempString = "und" +" \\hier" + "kannst du dir ja was zusammenstringen";

File test = new File(tempString);

Habe ich schon probiert´ geht nicht dann kommt, "Cannot convert java.lang.String to java.lang.File"

so wie du das oben beschrieben hast, hast du aber das "new File()" außenrum vergessen...

Klar, du kannst nicht einfach sagen

File test = "c:\\autoexec.bat";

sondern

File test = new File("c:\\autoexec.bat");

Die Syntax im Quellcode ist richtig, aber du hast Recht, habe es in meinem Post vergessen, war halt schnell geschrieben und abgeschickt :D

aber wenn du es so geschrieben hast, wie ich in meinem letzten Beitrag, dann kannst du eigentlich nicht diese Fehlermeldung bekommen...

schick doch mal nen Code-Auszug ;-))

import java.io.*;

import java.lang.Runtime;

class antivirus

{

public static void main(String args[])

{

try

{

File ausst = new File("W:\\pfad1\\pfad2\\","rechner.txt");

File fehler = new File("W:\\pfad1\\pfad2\\fehler.txt");

File rechn = new File("W:\\");

FileWriter fw1 = new FileWriter(fehler);

PrintWriter pw1 = new PrintWriter(fw1);

BufferedReader ein= new BufferedReader(new FileReader(ausst));

String rechner=ein.readLine();

while (rechner!=null)

{

rechn = ("\\\\"+rechner+"\\c$\\autoexec.bat");

System.out.println(rechner);

rechner=ein.readLine();

}

}

catch (IOException p)

{

System.out.println("Fehler: "+p);

}

}

}

Bitteschön, eine Copy-Paste und kompilieren... das Programm ist natürlich noch nicht fertig und macht noch nichts.

Original geschrieben von BMAS

File rechn = new File("W:\\");

...

...

rechn = ("\\\\"+rechner+"\\c$\\autoexec.bat");

Hier ist dein Fehler. Du initialisiert rechn am Anfang mit new File("W:\\"). Das überschreibst du aber dann später wieder. Und das, was du da versuchst zuzuweisen ist nichts anderes als ein String. Nicht aber eine Instanz der Klasse File. Und daher bekommst du diese Fehlermeldung.

Statt dessen müßte das ungefähr so aussehen (nicht getestet!!!)

rechn = new File("\\\\"+rechner+"\\c$\\autoexec.bat");

Okay, das war mir alles zu blöd, ich pinge jetzt *g*

Danke für eure Hilfe.

Ach und nochwas, kann man java.io.BufferedReader.readLine eigentlich sagen das er nur eine bestimmte Zeile lesen soll, z.B. Zeile 3?

readLine liest ja normalerweise immer wieder die nächste Zeile, ich will aber nur die 3. haben. Das Problem ist das in dem File in dem das Programm lesen soll, immer wieder einen anderen Inhalt hat und ich auch immer wieder die 3. Zeile brauche. geht das irgendwie?

besser ist das...

Schau dir mal den LineNumberReader an...

Kannst du mir das vielleicht erklären? Ich verstehe das nicht so ganz, ich habe das ausprobiert, aber der liest trotzdem immer alle Zeilen durch.

Kannst du mir vielleicht ein Beispiel posten, das funktioniert? Bitte!

Ich habe das auch noch nicht ausprobiert.

Aber du darfst eben nicht in einer Scheife lesen, sondern setzt einfach erst die Zeile auf die 3. mit setLineNumber(int i) und liest dann genau eine Zeile mit readLine().

Das sollte funktionieren...

Gruß

Mirko

Habe ich gemacht, aber das Programm liest immer zuerst die erste Zeile. Ich habe es geprüft, die Zeile wird schon auf 3 gesetzt, aber lesen tut es aus Zeile 1, vielleicht habe ich einen logischen Fehler irgendwo, werde mal schauen.

hmm, seltsam. Dann poste doch mal den Code...

Warum lässt du das ganze mit der Textdatei nicht sein?? Ist viel zu viel Aufwand.

Probiers doch mal mit nem Socket!!

Du schreibst ne "for"-Schleife und lässt damit nen ganzen IP-Bereich durchlaufen. Bei dem Socket brauchst du nur ne IP anzugeben und nen Port auf dem du dich verbinden willst! Hintergrund ist, wenn man sich mit einem bestimmten Port (135, 137, 7, 9, ....) verbinden kann, ist der Rechner an.

Wenn nicht, dann ist er nicht an.

So bekommst du wirklich jeden Rechner im Netzwerk.

Sowas hab ich schon mal gemacht, blos das ich von einem Rechner alle offenen Ports gesucht hab. (PortScanner)

Neija, ich muss sagen, dass ich noch nicht sooo weit in Java, dass ich mir zutraue etwas mit ports zu machen, von daher wäre mir die Textdatei Lösung lieber... ich werde mal schauen, vielleicht kriege ich es ja doch hin.

@Mirko

Ja, bitte mach´ das!

Geht eigentlich ganz einfach und ist wesentlich effektiver! Schau mal, wenn ein paar Rechner in das Netzwerk hinzugefügt werden, willst du dann jedes mal die Textdatei ändern??

try{

Socket sock=new socket(client,port);

sock.setTcpNoDelay(true);

sock.setSoLinger(false,5);

sock.setSoTimeout(10);

System.out.println("Client sowieso"+client+" ist online");

sock.close();

}

catch(IOException f){ //nichts

}

Das war´s. Jetzt packst du das ganze noch in ne schöne Schleife und machst noch den Rest außen rum und fertig ist dein NetzwerkScanner!!

cu Peeter

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.