Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Windows Dieses Forum dient den Diskussionen rund um alle Microsoft-Betriebssysteme.

Probleme mit Batch-Skripting un C++

Diskussion: Probleme mit Batch-Skripting un C++ im Forum Windows, in der Kategorie Operating Systems; Anzeige Moin Moin, ich benötige bitte etwas unterstützung bei einem kleinen Problem, welches mit einem Batchskript eventuell gelösst werden kann. ...

Antwort
Alt 22.08.07, 10:37   #1 (permalink)
 
Registriert seit: 01.09.05
naked_chef Leistung: Facit NTK
Likes: 0
Angry Probleme mit Batch-Skripting un C++

Anzeige

Moin Moin,

ich benötige bitte etwas unterstützung bei einem kleinen Problem, welches mit einem Batchskript eventuell gelösst werden kann.

Es läuft bei uns ein Samba-Server, wo es eine spezielle gruppe giebt die nur sporadisch zugriff auf eine freigabe benötigt. es soll den usern also möglich sein, ein batch-skript auszuführen und darüber ein connect zu der Freigabe zu erhalten. Es soll bei einem Neustart nicht neu connectet werden!

folgendes habe ich schon:

Code:
net use U: \\HOST\share /user:<username>
danach kommt die passwort abfrage.

Jetzt auf den punkt gebracht was ich noch benötige:

ich möchte nicht das der user ein Passwort eingeben muss, gibt es eine möglichkeit dies auch gleich in der Batch-Datei übergeben zulassen?
ist es möglich, dass das Laufwerk nur temporär gemountet wird und nach einem neustart nicht mehr zur verfügung steht? es sind auch noch andere laufwerke gemountet, diese sollen aber beim neustart verfügbar bleiben!

habt ihr ideen ?
Thanks
naked_chef ist offline   Mit Zitat antworten
Alt 22.08.07, 10:38   #2 (permalink)
Moderator
 
Benutzerbild von bitmuncher
 
Registriert seit: 30.09.06
bitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcorebitmuncher Quadcore
Likes: 443
Standard

Code:
net use z: \\server\freigabe passwort /user:benutzer
__________________
Mein Blog - Mein Job - Diaspora

Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund.

Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+
bitmuncher ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 22.08.07, 10:48   #3 (permalink)
Themenstarter
 
Registriert seit: 01.09.05
naked_chef Leistung: Facit NTK
Likes: 0
Standard

danke ...

ich bin ebend auch noch darauf gestoßen und mit der erweiterung /PERSISTENT:NO wird sogar der relogin beim start verhindert ...

-.-

EDIT ---

gibt es unter windows einen befehl ähnlich wie sleep ?
naked_chef ist offline   Mit Zitat antworten
Alt 22.08.07, 11:00   #4 (permalink)
Easyrider
Guest
 
Likes:
Standard Da dein Problem damit gelöst ist hier die Premium Lösung

EDIT:Ja die "Sleep"- Problematik ^^, nein gibts nicht aber es gibt einen Umweg:

ping 127.0.0.1 -n 4 >nul

macht ca. 4 Sekunden pause ^^




Hi,

ich habe das selbe auch gehabt.

Netzlaufwerke auf Knopfdruck verbinden, nur das ich einen Passwortabfrage möchte.

Bedenke jeder der sich mit Batch auskennt wird deine Batch öffnen und hat somit einen Benutzer und ein Passwort.


Ich habe das mit VBScript gelöst.

Dann wollte ich die Eingaben etwas schöner(GUI) gestalten und habe mich an HTA(MS HTML Application) gemacht.

Es funktioniert wunderbar, nur ein Bug den ich nicht zu lösen im stande bin, ist verblieben.

Nach dem Verbinden der Netzlaufwerke startet die HTA sich selbst nocheinmal ?!?

Code:
 <html>
<head>

<!--
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' File: MapNetworkDrives.hta
' Autor: Easyrider
' Version: 1.1 (focus() eingebunden)
'
' Verbindet Netzlaufwerke
'
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SHOWINTASKBAR="no"
WINDOWSTATE="maximize"
-->
<HTA:APPLICATION ID="oHTA"

APPLICATIONNAME="MapNetworkDrives.hta"
BORDER="dialog"
BORDERSTYLE="complex"
CAPTION="yes"
SHOWINTASKBAR="yes"
SYSMENU="yes"
INNERBORDER = "no"
MAXIMIZEBUTTON = "no"
MINIMIZEBUTTON = "no"
WINDOWSTATE="normal"
SINGLEINSTANCE="yes"
CONTEXTMENU = "no"
SYSMENU = "no"
>

<title>MapNetworkDrives</title>

<style type="text/css">
tr {font-size:12Pt; color:#FFFFFF; font-style:bold; font-family:Arial, Verdana}
input {font-size:12pt; color:#000000; font-style:bold; font-family:Verdana}
H2 {font-size:14pt; color:#FFFFFF; font-style:bold; font-family:Verdana}
</style>



<script language="VBscript">
Const Titel = "MapNetworlDrives.hta"
Dim Host, User, Pw
Dim WSHShell : Set WSHShell = CreateObject("WScript.Shell")
Dim WshNetwork : Set WshNetwork = CreateObject("WScript.Network")

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sub Run()
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Host = Document.All.Host.Value
If Host = "" Then Msgbox "Ein Hostname oder IP ist erforderlich" : Exit Sub

User = Document.All.UserName.Value
If User = "" Then Msgbox "Ein Username ist erforderlich" : Exit Sub

Pw = Document.All.UserPwd.Value
If Pw = "" Then Msgbox "Ein Passwort ist erforderlich" : Exit Sub

'Ping des Host's
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If not WMIPing(Host) Then
WSHShell.Popup Host & vbCRLF & vbCRLF & "Ist nicht erreichbar!" & vbCRLF & vbCRLF & "FIREWALL?A.U.S.?",4 ,Titel
self.close
Exit Sub
End If
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

'Netzlaufwerke die Verbunden werden sollen
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WshNetwork.MapNetworkDrive "X:", "\" & Host & "FREIGABE1", false, User, Pw
WshNetwork.MapNetworkDrive "Y:", "\" & Host & "FREIGABE2", false, User, Pw
WshNetwork.MapNetworkDrive "Z:", "\" & Host & "FREIGABE3", false, User, Pw
WSHShell.Popup "Netzlaufwerke verbunden", 3, Titel
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Set WshNetwork = nothing
Set WSHShell = nothing


self.close

end sub

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Function WMIPing(PCName)
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Dim objPing, objStatus
WMIPing = True
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & PCName & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WMIPing = False
End If
Next
End Function

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sub OnLoad()
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
window.moveto screen.width/2-200,screen.height/2-150
window.resizeto 400,300
document.form.UserPwd.focus()
End Sub

</script>
</head>

<body onload="OnLoad()" bgcolor="#6D7B8D">

<form name="form">
<BR>
<h2 align="center">MapNetworkDrives</h2>
<fieldset>
<table border="0" width="100%">
<tr bgcolor="#657383" align="left">
<td>
Host:<BR>
Benutzername:<BR>
Passwort:<BR>
</td>
<td>
<input type="Text" Name="Host" Value="192.168.1.blubb" tabindex="4"><BR>
<input type="Text" Name="UserName" Value="ich" tabindex="5"><BR>
<input type="Password" Name="UserPwd" Value="" tabindex="1" ><BR>
</td>
</tr>
<tr bgcolor="#657383" align="center">
<td>
<input type="Submit" Name="Start" value="Start" onClick="Run()" tabindex="2"><BR>
</td>
<td>
<input type="Button" Name="Close" value="Abbrechen" onClick="self.close" tabindex="3">
</td>
</tr>
</table>
</fieldset>
</form>
</body>
</html>
Wirf das in eine Textdatei und benenne sie in .hta um.
  Mit Zitat antworten
Alt 22.08.07, 11:49   #5 (permalink)
Themenstarter
 
Registriert seit: 01.09.05
naked_chef Leistung: Facit NTK
Likes: 0
Standard

die idee mit dem ping auf localhost um eine Zeitverzögerung zu erzielen ist super.

VB in allen ehren, aner ich habe mich für c++ enschieden und nutze ganz dirty die system()-funktion. akkerdings bringt mich das zu meinem nächsten problem...

escapesequenzen:

das script wird wie folgt aufgerufen:

Code:
system("net use U: \\HOST\SHARE /user:<user> password /PERSISTENS:no");
der aufmerksame coder wird das problem bestimmt schon bemerkt haben ...
system("net use U: \\HOST\SHARE /user:<user> password /PERSISTENS:no");

die escapesequenzen greifen und verhindern somit eine fehlerfrei übergabe der informationen... habt ihr dafür auch noch eine idee ?
naked_chef ist offline   Mit Zitat antworten
Alt 22.08.07, 13:34   #6 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

1)Windows-Sleep
(angabe ist in millisekunden, also für 4 Sekunden 4000 angeben)
2) net use U:\\\\HOST\\SHARE /user:<user> password /PERSISTENS:no
sollte gehen.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 22.08.07, 15:45   #7 (permalink)
 
Registriert seit: 14.08.07
Moredread Leistung: Facit NTK
Likes: 0
Standard

In C++ kannst Du einfach ne Schleife programmieren, dann hast Du auch eine Wartezeit drin. Ist nicht ganz so "dirty" wie der Ping . So richtig hübsch wäre es, die Systemzeit abzufragen und so lange die darauffolgenden Zeiten abzufragen, bis eine gewünschte Anzahl von Sekunden überschritten wurde.

ciao

JM
Moredread ist offline   Mit Zitat antworten
Alt 23.08.07, 07:48   #8 (permalink)
Themenstarter
 
Registriert seit: 01.09.05
naked_chef Leistung: Facit NTK
Likes: 0
Standard

danke für die hinweise, ich habe mich dafür entschieden, kein sleep einzufügen, der user startet nur noch das progemm, welches via "net use" die verbindung aufbaut ohne das er eine ausgabe bekommt.

die verpackung in c++ ist auch nur, damit die user die passwörter nicht ohne weiteres auslesen können. (Klar das es mit programmen wie strings(UNIX) funktioniert, aber diese tools laufen auf diesen rechner nicht, da es rechner für messungen sind)
naked_chef ist offline   Mit Zitat antworten
Alt 23.08.07, 09:29   #9 (permalink)
 
Registriert seit: 14.06.07
Machine Leistung: Facit NTK
Machine eine Nachricht über ICQ schicken
Likes: 0
Standard

Zu der Sache mit dem Ping als Sleep:

Das funktioniert nicht immer... ich hab das auch mal so realisiert gehabt in meiner Anfangszeit. Das gibt diverse Probleme mit Desktopfirewalls und so weiter...
Machine ist offline   Mit Zitat antworten
Alt 25.08.07, 14:41   #10 (permalink)
Easyrider
Guest
 
Likes:
Standard

@M4CH!N3 (Beruf: Azubi FIAN)

Natürlich funktioniert das mit dem Ping immer -.-

Ich habe das in einem meiner umfangreicheren Batchscripte(3 Seiten A4) im Einsatz.

Das Script benutzen mehrere 100 Techniker(mich eingeschlossen) auf völlig verschiedenen Systemen.

Im schlechtesten Fall ist keine Netzwerkkarte da, auch dann funktioniert "es".

Wenn ein Ping wegen einer Firewall blockiert wird, ist das auch nicht relevant, da Ping.exe trotzdem ein Paket abschickt.

Und das kostet Zeit. ~ 1Sekunde für einen Ping oder ein "Host unrechable" wie auch immer.

Wenn du schon nach deiner "Anfangszeit" endlich auf eine "bessere" Lösung gestossen bist, POSTE sie und erwarte keine Gnade.
  Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Operating Systems » Windows » Probleme mit Batch-Skripting un C++
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
batch script gugugs Code Kitchen 16 26.03.08 19:20
[GELÖST] Probleme mit einer Batch-Datei Proma Windows 8 16.01.08 14:07
Batch River Coke Code Kitchen 5 02.01.08 13:16
>2 (Batch) Easyrider Code Kitchen 2 29.06.07 19:29
Wurzelziehen in Batch ^quit Code Kitchen 15 06.05.06 09:22


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61