Forum: PC Hard- und Software Automatische Dateiübertragung sobald Netzwerkverbindung (WLAN) initiiert.


von Chris D. (m8nix)


Lesenswert?

Hallo,

wie kann ich feststellen ob eine Verbindung zu einem bekannten Netzwerk 
besteht und darauf hin automatisiert Dateien auf einen dort 
freigegebenen Ordner kopieren?
Gibts evtl. ein Script oder fertiges Programm?

Gruß
Chris

von Lukas K. (carrotindustries)


Lesenswert?


von Chris D. (m8nix)


Lesenswert?

Vielen Dank Luk4s,

das Ganze ist mir allerdings zu "hoch".
Da ich es verpasst hatte zu erwähnen, das es sich um ein Win 7 
Betriebssystem handelt wär Dein Vorschlag vermutlich genau der richtige, 
wenn ich was mit Linux am Hut hätte.

Am liebsten wäre mir, wenn ich die bestehende Verbindung mit 
Windows-Bordmitteln abfragen könnte... So in der Art:
if (connection == "SSID") xcopy x: y:;

Gruß
Chris

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du könntest die Ausgaben von ipconfig interpretieren, vielleicht 
genügt das schon. Ansonsten dürfte die von Dir gewünschte Information 
per WMI ermittelbar sein, diese Schnittstelle sollte mit VBScript oder 
über die Powershell auswertbar sein.

von Chris D. (m8nix)


Lesenswert?

Herzlichen Dank Rufus,

das ist genau das, wonach ich gesucht hatte.
VBScript & WMI

[[http://www.mcseboard.de/windows-forum-lan-wan-32/auslesen-status-netzwerkverbindung-vbscript-wmi-80768.html]]

von Chris D. (m8nix)


Angehängte Dateien:

Lesenswert?

Jetzt hab ich mal ein bisschen mit VBS und WMI herumgespielt. 
Herausgekommen ist bisher dies:
1
strComputer = "."
2
Set WshShell = WScript.CreateObject("WScript.Shell")
3
Set objWMIService = GetObject("winmgmts:" _
4
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
5
Do
6
    WScript.Sleep 5000
7
    Set colItems = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter Where NetConnectionStatus = 2")
8
    connect = 0
9
    For Each objItem in colItems
10
        If objItem.NetConnectionStatus = 2 Then connect = 1
11
    Next
12
Loop Until connect = 1
13
    For Each objItem in colItems
14
        text = text & "NetConnectionID: " & objItem.NetConnectionID & VbCrLf
15
        text = text & "NetConnectionStatus: " & objItem.NetConnectionStatus  & VbCrLf
16
        text = text &  "AdapterType: " & objItem.AdapterType & VbCrLf
17
        text = text &  "ProductName: " & objItem.ProductName & VbCrLf
18
    WScript.Echo TEXT
19
Next
Das Script frägt alle fünf Sekunden den Netzwerkadapter ab. Funktioniert 
soweit ganz gut. Nur die Prozessorauslastung der WMI-Abfrage ist enorm - 
So kann ich das Script nicht verwenden.

Hat noch jemand einen Vorschlag?

Gruß
Chris

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ich versteh jetzt den Code nicht im Detail, aber was hindert dich daran 
die Pause größer zu machen? Du must sowieso immer mit einer 
Fehlentscheidung rechnen, sei es weil das Netz kurz nach deiner Abfrage 
wieder weg ist, oder während deiner gewünschten Datenübertragung 
verlustig geht.
Kann man sowas nicht über den Taskplanermanager machen oder wie das 
Dingens heißt? Worauf es ankommt, ist ja nur die automatische 
Fehlerbehandlung. Also einfach als Backup-Vorgang definiert.

von Chris D. (m8nix)


Angehängte Dateien:

Lesenswert?

Die Verbindung besteht in der Regel nur für kurze Zeit. Die Dateien 
müssen quasi im Vorbeigehen kopiert werden. Aus diesem Grund benötige 
ich eine schnelle Verbindungsauswertung.

Aber Dein Vorschlag mit dem Aufgabenplaner ist Klasse. Dort lässt sich 
unter den Bedingungen einstellen, das eine Aufgabe nur ausgeführt wird, 
wenn eine Netzwerkverbindung hergestellt ist. Mal sehen ob das 
funktioniert...

Danke

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Naja. Freu dich nicht zu früh. Bei M$ gibts gerne Überraschungen.

Ein Torrent wäre auch eine Idee. Bei mir ist es jedensfalls egal, ob 
Internet vorhanden oder nicht. Der Torrent wird einfach später weiter 
fortgesetzt.

von Chris D. (m8nix)


Lesenswert?

Du hattest recht. Doch zu früh gefreut.

Problem mit dem Aufgabenplaner:
Man kann zwar als Zusatzbedingung angeben das eine Aufgabe nur 
ausgeführt wird wenn eine Netzwerkverbindung besteht, aber ich konnte 
nicht herausfinden wie man eine hergestellte Netzwerkverbindung als 
"Trigger", der zur eigentlichen Auslösung der Aufgabe benötigt wird, 
einstellen kann.

Neben den zeitlichen und div. anderen Triggern gibt es auch eine Unmenge 
an Ereignistriggern. Welcher davon aber eine Netzwerkverbindung triggert 
ist mir unbekannt.

Kann mir zum Thema Aufgabentrigger jemand weiterhelfen?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Eine Netzwerkverbindung oder alle? Wenn du selbst nicht am Netz hängst, 
ist deine IP schlicht Null. (Zumindest bei DHCP)

von Chris D. (m8nix)


Lesenswert?

Eine bestimmte Verbindung. Aber was nützt mir bei DHCP die IP?

von __tom (Gast)


Lesenswert?

ab vista gibt es für sowas den network list manager. der gibt einem, auf 
wunsch, auch einen dezenten hinweis wenn eine netzwerkverbindung auf 
oder abgebaut wurde:

http://msdn.microsoft.com/en-us/library/aa370803(v=VS.85).aspx

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Bei DHCP bekommst du deine IP zugewiesen. Wenn dein Rechner den 
DHCP-Server nicht erreichen kann, ist deine eigene IP Null. Solange die 
IP also auf 0 steht, hast du keine Netzwerkverbindung. Also brauchst du 
nur eine Möglichkeit deine eigene IP zu lesen. Ich kenns nur von PHP, da 
geht es.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
Lade...