Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/01/2008, 11h35   #1
Invité de passage
 
Développeur informatique
Inscription : septembre 2007
Messages : 55
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2007
Messages : 55
Points : 1
Points : 1
Envoyer un message via Skype™ à robux
Par défaut vérifier si un mount est correctement fait



J'utilise "smbmount" pour monter des volumes sur un serveur au sein d'un réseau LAN. Je mets ce contenu dans un arborescence définie qui est : "/home/user/nomduserveur/nomduvolume".
Pour creer cet arborescence j'utilise mkdir.

Cependant, j'ai parfois des problèmes avec "smbmount" et mon contenu est vide alors : Est-il possible de contrôler/vérifier si le mount a été bien fait dans mon code c++?

J'utilise le code suivant avec notamment la fonction système qui execute du bash, est ce une bonne solution?

voici mon code :
Code :
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
 
{
......
// je récupère les données de mon thread
	LEAShareItem* l_parent = (LEAShareItem*)a_data;
// j(utilise wxConfig de wxWidget pour conserver des données ici mdp pour essai
	wxConfigBase* config = wxConfigBase::Get();
// je recupère ces données
	config->Write(_T("username"),l_parent->m_devicePt->m_username);
	config->Write(_T("password"),l_parent->m_devicePt->m_password);
// je définis le path du dossier destinataire				
	wxString path;
	wxString l_mountdirectory = path.Format(_T("$HOME/lacie_mount/%s/%s"),l_parent->m_devicePt->GetName().c_str(),l_parent->m_sharePt->GetName().c_str());
// je crèes le dossier destinataire en question par mkdir
        wxString  str = _CTS("mkdir -p ") + l_mountdirectory;
	system(_STC(str));
//ke montes le tout par smbmount et system  
	wxString mount;
	wxString mount2= mount.Format(_T("smbmount //%s/%s %s -o username=%s,password=%s"),l_parent->m_devicePt->GetName().c_str(),l_parent->m_sharePt->GetName().c_str(),l_mountdirectory.c_str(),l_parent->m_devicePt->m_username.c_str(),l_parent->m_devicePt->m_password.c_str());
system(_STC(mount2))<<endl;
-----------
->>> ici j'aimerais controler si le mont a bien été fais!!!!! :-)
-----------
//j' ouvre le contenu dans un browser
	wxFile file;
	file.Exists(_T("/usr/bin/konqueror"));
	if(file.Exists(_T("/usr/bin/konqueror")))
		std::system(_STC(_T("konqueror ") + l_mountdirectory));
	if(file.Exists(_T("/usr/bin/nautilus")))
		std::system(_STC(_T("nautilus ") + l_mountdirectory));
	pthread_exit (0);
}


Merci

Robux

PS : Kubuntu feisty
robux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 15h52   #2
Membre habitué
 
Inscription : janvier 2006
Messages : 161
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 161
Points : 144
Points : 144
Citation:
Envoyé par robux
J'utilise "smbmount" pour monter des volumes sur un serveur au sein d'un réseau LAN. Je mets ce contenu dans un arborescence définie qui est : "/home/user/nomduserveur/nomduvolume".
Pour creer cet arborescence j'utilise mkdir.
tu utilises un utilisateur par serveur ?

si je devais faire ça, je pense que je mettrais les montages dans un répertoire sous /mnt, par exemple /mnt/nomduserveur/nomduvolume

Citation:
Envoyé par robux
Est-il possible de contrôler/vérifier si le mount a été bien fait dans mon code c++?
En c++ je ne sais pas, mais en simple ligne de commande, un mount te dit ce qui est monté en ce moment. Il y a probablement une interface de développement dans un package smb*-dev ou quelque chose dans ce genre là. Par contre je ne sais pas si cette interface est en c++, il est tout à fait possibel qu'elle soit en c.

Sinon, si tu veux t'assurer que les montages samba sont bien faits, tu peux essayer de faire un simple ls dans un répertoire monté, et si tes répertoires et fichiers sont là, c'est qu'à priori, tout s'est bien passé.
wtfu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 10h25   #3
Invité de passage
 
Développeur informatique
Inscription : septembre 2007
Messages : 55
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2007
Messages : 55
Points : 1
Points : 1
Envoyer un message via Skype™ à robux
je suis toujours je n'ai pas encore trouvé

Citation:
Envoyé par wtfu Voir le message
tu utilises un utilisateur par serveur ?
pas compris ta question

Citation:
Envoyé par wtfu Voir le message
si je devais faire ça, je pense que je mettrais les montages dans un répertoire sous /mnt, par exemple /mnt/nomduserveur/nomduvolume
C'est vrai je vais changer ça mais ce n'est pas le plus gros problème. Je cherche vraiment une possibilité de contrôler si le mount a été fait.

Citation:
Envoyé par wtfu Voir le message
En c++ je ne sais pas, mais en simple ligne de commande, un mount te dit ce qui est monté en ce moment. Il y a probablement une interface de développement dans un package smb*-dev ou quelque chose dans ce genre là. Par contre je ne sais pas si cette interface est en c++, il est tout à fait possibel qu'elle soit en c.
Je ne cherche pas un outil mais un bout de code a intégrer au mien

Citation:
Envoyé par wtfu Voir le message
Sinon, si tu veux t'assurer que les montages samba sont bien faits, tu peux essayer de faire un simple ls dans un répertoire monté, et si tes répertoires et fichiers sont là, c'est qu'à priori, tout s'est bien passé.

"ls" me semble beaucoup trop insuffisant et dans mon code c++ celà suggère que je dois faire appel à système pour utiliser ls. Comment faire à part cette idée.
De plus les répétoire n'ont rien avoir avec le mount mais avec le mkdir et JUSTEMENT. donc vérifier s'il sont présent ne justifira pas que le mount a bien été faits. par contre pour les fichier c'est une idée. j'y ai pensé mais je ne la trouve pas très propre. Enfin en tappant mount on voit effectivement si le mount a été fait mais comment EXPLOITER cette piste? trier les informations?

Merci

Robux
robux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 11h57   #4
Membre émérite
 
Inscription : novembre 2007
Messages : 553
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 553
Points : 876
Points : 876
Bonjour.

Si le système monté n'est pas vide, un vérification de la taille du dossier (avant et après l'opération de montage) peut-être une solution. Est-tu sûr que la fonction que tu utilises pour monter ton fichier ne renvoie de code pour indiquer si l'opération fut un succès?
vinc-mai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h10   #5
Invité de passage
 
Développeur informatique
Inscription : septembre 2007
Messages : 55
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : septembre 2007
Messages : 55
Points : 1
Points : 1
Envoyer un message via Skype™ à robux
Salut,

Citation:
Envoyé par vinc-mai Voir le message
Bonjour.
Si le système monté n'est pas vide, un vérification de la taille du dossier (avant et après l'opération de montage) peut-être une solution.
C'est une bonne idée aurait tu un bout de code please sous linux mais à integrer en c++

Citation:
Envoyé par vinc-mai Voir le message
Est-tu sûr que la fonction que tu utilises pour monter ton fichier ne renvoie de code pour indiquer si l'opération fut un succès?
Bah en fait j'execute au sein de mon code c++ comme tu as pu le voir :
Code :
1
2
3
4
 
wxString mount;
wxString mount2= mount.Format(_T("smbmount //%s/%s %s -o username=%s,password=%s"),l_parent->m_devicePt->GetName().c_str(),l_parent->m_sharePt->GetName().c_str(),l_mountdirectory.c_str(),l_parent->m_devicePt->m_username.c_str(),l_parent->m_devicePt->m_password.c_str());
system(_STC(mount2))<<endl;
la fonction STC transforme simplement la String en char*. en fait j'utilise system(""). et système renvoie une valeur si l'appel a bien été fait mais pas si elle a été exécutée. il peyt y avoir un succès avec derrière un SMB failed dans mon terminal et là c'est foutu mon contenu est vide.


Ta première idée est interessante, même s'il faut utiliser "systèm()" ça me va.

@ toute

Robux
robux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 14h52   #6
Membre émérite
 
Inscription : novembre 2007
Messages : 553
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 553
Points : 876
Points : 876
Il y a sûrement mieux! Désolé le c++ je connais pas. Peut-être devrais-tu poser ta question dans un forum c++.
vinc-mai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h10.


 
 
 
 
Partenaires

Hébergement Web