lowbyte1
Goto Top

Netzlaufwerke verbinden C

Hallo C Freaks

Ich möchte ein Netzlaufwerk verbinden.
Da ich noch nicht soviel erfahrung mit Netzwerkprogrammierung in C habe,bediente ich mich der Funktion
System(), der ich ein Consolen Befehl übergeben kann.Doch leider funktionierts so nicht,kann mir jemand helfen?


#include <stdio.h>

int system();

int main(void)

{
char c;
printf("bitte geben sie ein password ein:");
while( (c = getc(stdin)) !='\n');

system("net use s: \\\\172.16.0.2\\\Music %c /u:lowbyte >NUL, c" );
getchar();
return 0;
}

Content-ID: 67695

Url: https://administrator.de/forum/netzlaufwerke-verbinden-c-67695.html

Ausgedruckt am: 21.12.2024 um 12:12 Uhr

gnarff
gnarff 03.09.2007 um 03:45:10 Uhr
Goto Top
Da gibt es doch ein schoenes Tutorial zum Thema Netzwerkprogrammierung in C

saludos
gnarff
lowbyte1
lowbyte1 03.09.2007 um 03:51:56 Uhr
Goto Top
hallo

Unterlagen habe ich genug,
doch möchte es halt so lösen !

mfg lb
gnarff
gnarff 03.09.2007 um 03:57:56 Uhr
Goto Top
Was ist es denn fuer ein Netzlaufwerkstyp?
Welche Plattform?
lowbyte1
lowbyte1 03.09.2007 um 04:05:16 Uhr
Goto Top
hallo das musst du ja nicht umbedingt wissen..

Console: net use K: \\IP\Folder Pass /u:user

File server mit AD.

Jetz möchte ich eifach den obigen Befehl ausführen mit der funktion System() von C.


ps:Das ganze funktioniert alles do das problem ist ich kann der Funktion System() keine Variable übergeben¨! wie password


mfg lb
gnarff
gnarff 03.09.2007 um 04:15:03 Uhr
Goto Top
Denke mal daran, wann man einen Wert, einen Zeiger oder eine Referenz als Parameter uebergibt...
lowbyte1
lowbyte1 03.09.2007 um 04:19:03 Uhr
Goto Top
hallo


So würde es gehen..


#include <stdio.h>

int system();

int main(void)

{

system("net use s: \\\\172.16.0.2\\\Music pass /u:lowbyte >NUL" );
getchar();
return 0;
}


Aber ich möchte ja pass und user ändern können.!?

mfg lowbyte
gnarff
gnarff 03.09.2007 um 04:30:35 Uhr
Goto Top
Wo sind die bisher geschrieben?
Dazu musst Du ja eine Zeichenkette in eine Datei schreiben koennen, bzw. die alten Werte ueberschreiben...das sehe ich in Deinem Script nicht...
lowbyte1
lowbyte1 03.09.2007 um 04:37:44 Uhr
Goto Top
hallo ich möchte nur das wissen was ich gefragt habe!

#include <stdio.h>

int system();

int main(void)

{
char c;
printf("geben sie ein password ein:");
while( (c = getc(stdin)) !='\n');

printf("hall %s", &c);
system("net use s: \\\\172.16.0.2\\\Music %c /u:lowbyte >>test12.txt", &c);
getchar();
return 0;
}
gnarff
gnarff 03.09.2007 um 04:44:29 Uhr
Goto Top
Schon ein wenig besser...
Hast Du Dich schon einmal eingehender mit Input/Output und File-Manipulation beschaeftigt?
Ich beantworte Dir doch Deine Fragen...
lowbyte1
lowbyte1 03.09.2007 um 04:55:19 Uhr
Goto Top
hallo

Ich Programmiere erst seit etwa 1 Monat C und bin noch nicht gerade der Held darin.
Wie sieht den deine Lösung aus.?

mfg lowbyte
gnarff
gnarff 03.09.2007 um 05:04:08 Uhr
Goto Top
Deine Loesung ist doch gar nicht schlecht...
Was moechtest Du.. ein Passwort und einen Benutzernamen aendern, also zwei Strings in einer Datei abaendern.
Wo also liegt der Username und wo das Passwort, muss man sich fragen...
Und, wie fuehre ich I/O File Manipulationen unter stdio.h aus...

Ich kann nur Cobol, Fortran und Algol ...fuer andere Sprachen muss ich mich durch Befehls-Referenzen quaelen...

saludos
gnarff
lowbyte1
lowbyte1 03.09.2007 um 05:31:34 Uhr
Goto Top
hallo

#include <stdio.h>

int system();

int main(void)

{
char c;
printf("geben sie ein password ein:");
while( (c = getc(stdin)) !='\n');

system("net use s: \\\\172.16.0.2\\\Music %c /u:lowbyte >NUL", &c);
getchar();
return 0;
}


So müsste es sein.
Aber es funktioniert nicht..
weil die system() funktion %c nicht formatiert.
gnarff
gnarff 03.09.2007 um 06:07:18 Uhr
Goto Top
Imho fehlt die <stdlib.h>
Vllt. moechtest Du Dir auch einmal die Benutzung von system() genau betrachten
saludos
gnarff
lowbyte1
lowbyte1 03.09.2007 um 06:18:18 Uhr
Goto Top
hallo

Also funktioniert das mit system() nicht!
so wie ich das verstanden habe.Jedenfals nicht mit variablem pass und user etc...

mfg lowbyte
Guenni
Guenni 09.09.2007 um 09:48:39 Uhr
Goto Top
@lowbyte1

Hi,

du kannst die Kommandozeile Stück für Stück
zusammensetzen, und dann die Variable komplett
an system übergeben.

char ordner[64];
char pass[8];
char user[16];
strcpy(ordner,"net use z: \\\\server\\system");  
strcpy(user,"/user:guenni");  
//Passwort eingeben
scanf("%s",pass);  
//Leerzeichen anhängen
strcat(ordner," ");  
//Passwort anhängen
strcat(ordner,pass);
//Leerzeichen anhängen
strcat(ordner," ");  
//User anhängen
strcat(ordner,user);
//Testausgabe
//printf("%s\n",ordner); 
system(ordner);
return 0;

Gruß
Günni
lowbyte1
lowbyte1 14.09.2007 um 21:56:35 Uhr
Goto Top
hallo Günni

Danke für die Kompetente Antwort.


lowbyte
lowbyte1
lowbyte1 01.10.2007 um 10:49:44 Uhr
Goto Top
HALLO

Da ich immer wie geschickter in C werde...dachte ich ich Poste mal mein kleines Programm
zum Netzlaufwerke verbinden.Das Prog,ist auf jeden fall zu verbessern.auserdem ist es auf mich zugeschnitten, von dem her.....
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define EXIT	0
#define FAILURE	1
#define MAX		100
#define CLS		system("cls"); 

char authpuffer[150];
char user[16];
char passwd[31];

char *devices = {  "net use T: \\\\172.16.0.2\\MOVIES",  
                     "net use V: \\\\172.16.0.2\\MOVIES1",  
                     "net use W: \\\\172.16.0.2\\MOVIES2",  
                     "net use X: \\\\172.16.0.2\\PROGRAMME",  
                     "net use Y: \\\\172.16.0.2\\DIV",  
                     "net use S: \\\\172.16.0.2\\Music" };  

int connection(void);
int disconnection(void);
void status(void);
void load(void);
short auth(dev_id);


int system();

int main(void)
	{

		int menuop;

		system("Color 0a && Title Secure Fileserver Client ver.1.31");  
		load();
		system("CLS");  

		ret : puts("\a"); 	CLS;  
	

		printf("\n\n  --   Net-device-Client   --   \n");          


		puts("\n\n");  

		printf(" [1] Connection\n\n");  

		printf(" [2] Disconnect\n\n");  

		printf(" [3] Server-Status\n\n");  

		printf("  Exit\n\n");  


		printf("Input:");  

		scanf("%1i", &menuop);  
		fflush(stdin);
	

		switch(menuop) {

			case 1:	connection();
					goto ret;

			case 2: disconnection();
					goto ret;

			case 3: status();
					goto ret;

			case 0:	return EXIT;

					default:fprintf(stderr,"falsche eingabe !!");  
				
		}

     goto ret;
}

// Connection 

int connection()
	{
		char yn;
		int i, x;
//		short reply;

		printf("\a");  
		CLS;
		printf("\nNetzlaufwerke verbinden ? (y/n)\n\n");  
		scanf("%1c", &yn);  
	
		if(yn == 'y'){  

		CLS;

		printf("\n\nBitte Authentifizieren\n");  

		printf("\nUsername eingeben:\n");  
		scanf("%15s",&user);  
		fflush(stdin);
		printf("\nPassword eingeben:\n");  
		scanf("%30s", &passwd);  
		fflush(stdin);

		system("net use /persistent:no >nul");  

		for(x=0 ; x<6 ; x++) {
			if(auth(devices[x])) {
				fprintf(stderr,"ein netzlaufwerk verbindung gescheitert ...");  
			}

		}

				fprintf(stderr,"netzlaufwerk erfolgreich verbunden ...");  



				for(i = 0;(i < 800000000l); i++);
						;

				return EXIT;


			}

			else if(yn == 'n');{  
				return EXIT;
			}

		printf("falsches zeichen");  

		for(i = 0;(i < 800000000l); i++);
			;
		

		  return EXIT;
		
	}




// Disconnect


int disconnection()
	{
		char yn;
		long i;
		CLS;
			puts("\n");  
			sp:printf("\a");   
			printf("\n\nNetzlaufwerke trennen ? (y/n)\n\n");  
			scanf("%1c", &yn);  
			fflush(stdin);
			CLS;
	
		if(yn == 'y'){  

			system("net use T: /delete >nul");  
			system("net use V: /delete >nul");  
			system("net use W: /delete >nul");  
			system("net use X: /delete >nul");  
			system("net use Y: /delete >nul");  

			if( !(system("net use S: /delete >nul"))){  

					printf("Netzlaufwerke wurden getrennt ...");  

			}else{

					CLS;
					fprintf(stderr,"\nFehler bei der Netzlaufwerk trennung");  
			}

				for(i = 0;i < 800000000; i++)
						;
				return EXIT;
			}
			
			else if(yn == 'n'){  

				return EXIT;
			}

			
			printf("FALSCHES ZEICHEN");  
			for(i = 0;i < 800000000; i++);						;
			CLS;
			goto sp;
				
	}




//Server-Status


void status(void)
	{
	long i;
	CLS;
	if(system("ping -n 1 -w 10 172.16.0.2>nul") == 0)  
			printf("\n\n Server 172.16.0.2 Online \n\n");  
				else
			printf("\n\n Server 172.16.0.2 Offline\n\n");  

		for(i = 0;(i++ < 800000000l);)
			;
	}


// Loading-Funktion


void load(void)
	{
	char buffer= "LOADING";  
	int zahl = 0;

			do
			{
				printf("%d%%", zahl);  
				CLS;
				printf("\n\n\n\n\n\t%s\t", &buffer);  
				zahl++;
			}
		while(zahl < MAX);

	}


 
short auth(char *device)
	{


		strcpy(authpuffer, device);
		strcat(authpuffer, " ");  
		strcat(authpuffer, passwd);
		strcat(authpuffer, " /u:");   
		strcat(authpuffer, user);
		strcat(authpuffer, " >NUL");  

		if(!(system(authpuffer))){
		
			return EXIT;

		} else {
			
			return FAILURE;

		}

	}


// greetz lowbyte
gnarff
gnarff 01.10.2007 um 15:43:22 Uhr
Goto Top
Da haben wir ja endlich stdlib.h und auch system() wird nun richtig angewandt...;)
lowbyte1
lowbyte1 01.10.2007 um 20:48:16 Uhr
Goto Top
hey alter kumpel...

ja sieht fast danach aus was !!

cyu lowbyte