Pour les scripts : c'est ici

Je n’insisterai pas, mais vraiment vous êtes en train d’expliquer qu’un code du ba-ba de Linux ne marche que sur une distribution mal configurée ?
Et qu’il faut passer par une bidouille de 8 pages d’explication pour connaitre l’adresse IP d’une bécane connectée à un routeur !

Donc sur mes machines où çà fonctionne avec 1 Sid 32 bits, une Sid 64 bits, une Squeeze , une Ubuntu et une Mint il y a 5 erreurs de configuration ???

Est-ce que je risque l’explosion ?

[quote=“eggregor”]Je n’insisterai pas, mais vraiment vous êtes en train d’expliquer qu’un code du ba-ba de Linux ne marche que sur une distribution mal configurée ?
Et qu’il faut passer par une bidouille de 8 pages d’explication pour connaitre l’adresse IP d’une bécane connectée à un routeur !

Donc sur mes machines où çà fonctionne avec 1 Sid 32 bits, une Sid 64 bits, une Squeeze , une Ubuntu et une Mint il y a 5 erreurs de configuration ???

Est-ce que je risque l’explosion ?[/quote]

Ils essaient simplement de t’expliquer que les commandes dans /usr/sbin ne sont normalement utilisables que par root.
Plus précisément elles ne sont utiles que pour root, et c’est même dangereux de laisser utiliser ces commandes par n’importe quel utilisateur du systeme.
Dans debian, les gérants du projet ont estimé que vu que ces commandes n’étaient utiles qu’à root, autant ne pas laisser les utilisateurs standard y avoir accès.
Mais si ça t’amuse, tu peux rajouter /usr/sbin à ton path.

re,
Expliqué comme çà c’est plus clair, merci.

Quand j’avais commencé à me mêler de ce qui ne me regarde pas j’avais écrit :

ifconfig

Ce qui est effectivement indispensable sous Debian.

Par contre avec Mint :

$ ifconfig apporte une réponse ( sans aucun sudo )

Pour Ubuntu ma machine est hors tension, je ne peux vérifier.

Re,

Non, pas mal configuré mais voulu par le concepteur sinon ce n’était pas la peine de créer une librairie [size=150]S[/size]bin

ggoodluck47: Je ne doutais pas de ta configuration :wink:, mais juste qu’effectivement le PATH de 95% des distributions l’ajoute pour un simple utilisateur.

Mais bon ca ne me donne pas de commande pour avoir l’ip simplement… en plus maintenant avec NetworkManager etc… ca risque d’être un peu plus compliqué sans passer par ifconfig

Et pour l’utilisation d’un site web, je ne suis pas convaincu.

Non, seulement les distribs qui ont décidé d’utiliser sudo au lieu de su, et donc d’utiliser le PATH de l’utilisateur pour utiliser les commandes root.

[quote=“zelogik”]Mais bon ca ne me donne pas de commande pour avoir l’ip simplement… en plus maintenant avec NetworkManager etc… ca risque d’être un peu plus compliqué sans passer par ifconfig

Et pour l’utilisation d’un site web, je ne suis pas convaincu.[/quote]
Si tu es derrière un routeur, ton système ignore totalement ton IP publique. Donc le seul moyen de l’avoir est de passer par l’extérieur (sauf si ton routeur te permet de l’afficher via l’interface d’admin ou autre).
Une autre solution est de prendre une adresse DNS dynamique genre dyndns puis de faire un host/nslookup/dig sur cette adresse.

Bonjour,

[quote=“zelogik”]
Et pour l’utilisation d’un site web, je ne suis pas convaincu.[/quote]
Ce genre de sites dure longtemps, mais bon je vais pas répéter ce que dit kna :slightly_smiling:

Aller, juste pour le fun, bien que ce sont des classiques :

Un exemple quasi passe partout:

$ wget -qO - http://wimip.fr | perl -ne '/IP: ((?:\d+\.){3}\d+)/ && print $1."\n" '

Un en pur perl avec LWP::Simple, souvent installé:

$ perl -e 'use LWP::Simple; $_=get("http://wimip.fr"); /((?:\d+\.){3}\d+)/ && print $1."\n"'

Hello,

Un script pour lister les fichiers d’un disque dur au moment du démontage (via zenity et une boite de dialogues), et maintenir un petit tableau html avec la place restante…
On utilise un fichier simple pour le nom des disques à lister, ainsi que leur catégories.

#!/bin/sh

LISTDIR=/home/jaywax/listes/disques
liste=$(mount|grep media|awk '{print $3}')
la_date=$(date +"%d-%m-%Y")
for disque in $liste; do
	AFFICHER="$AFFICHER FALSE `basename $disque`"
done
reponse=$(zenity  --width 500 --list  --text "Quel disque lister / demonter?" --checklist  --multiple --column "Choix" --column "Media" $AFFICHER);
if [[ "$?" == "0" ]]; then
	if [[ "$reponse" != "" ]]; then
		OLD_IFS=$IFS
		IFS="|"
		for rep in $reponse; do
			find /media/${rep}/ > $LISTDIR/${rep}
			resultat=`df -B 1024K |grep ${rep}|awk '{print ("'"$rep"'"";"$3";"$4)}'`
			description=`grep $rep";" $LISTDIR/tout|awk -F";;" '{print $2}'`
			sed 's/^'$rep';.*/'$resultat';'${la_date}';;'${description}'/g' $LISTDIR/tout > $LISTDIR/tout.new
			unset $resultat
			mv $LISTDIR/tout $LISTDIR/tout.old
			mv $LISTDIR/tout.new $LISTDIR/tout
			umount /media/${rep}
		done
		IFS=$OLD_IFS
	fi
fi
# On construit le fichier html
> $LISTDIR/tout.html
echo '<html><head><link href="tout.css" rel="stylesheet" type"text/css"></head><body>' >> $LISTDIR/tout.html
echo '<div class="Tableau"><p class="legende"><span class="col">Volume</span><span class="col">Taille totale (Go)</span><span class="col">Espace occupe (Go)</span><span class="col">Espace libre (Go)</span><span class="col">Occupation</span><span class="col">Mise a jour</span><span class="col">Description</span></p>' >> $LISTDIR/tout.html
total_occupe=0
total_libre=0
total_total=0
for ligne in $(cat $LISTDIR/tout);do
	volume=`echo $ligne|awk -F";" '{print $1}'`
	occupe=`echo $ligne|awk -F";" '{print $2}'`
	libre=`echo $ligne|awk -F";" '{print $3}'`
	check=`echo $ligne|awk -F";" '{print $4}'`
	la_des=`echo $ligne|awk -F";;" '{print $2}'`
	total=$((occupe+libre))
	occupation=`echo "scale=2;$((occupe*100))/$total"|bc`
	total_occupe=$((total_occupe+occupe))
	total_libre=$((total_libre+libre))
	total_total=$((total_total+total))
	echo '<p><span class="col">'$volume'</span><span class="col">'`echo "scale=1;$total/1000"|bc`'&nbsp;</span><span class="col">'`echo "scale=1;$occupe/1000"|bc`'&nbsp;</span><span class="col">'`echo "scale=1;$libre/1000"|bc`'&nbsp;</span><span class="col">'$occupation'%</span><span class="col">'$check'&nbsp;</span><span class="col">'"$la_des"'&nbsp;</span></p>' >> $LISTDIR/tout.html
done
total_occupation=`echo "scale=2;$((total_occupe*100))/$total_total"|bc`
echo '<p><span class="col">Total</span><span class="col">'`echo "scale=1;$total_total/1000"|bc`'&nbsp;</span><span class="col">'`echo "scale=1;$total_occupe/1000"|bc`'&nbsp;</span><span class="col">'`echo "scale=1;$total_libre/1000"|bc`'&nbsp;</span><span class="col">'$total_occupation'%</span><span class="col">'$check'&nbsp;</span><span class="col">Tous les volumes</span></p>' >> $LISTDIR/tout.html
echo '</div></body></html>' >> $LISTDIR/tout.html
exit 0

Le fichier simple contenant les informations (fichier “tout” dans l’exemple) est de la forme suivante (lorsqu’on ajoute un disque):

disque_1;;photos
disque_2;;musique

Il est ensuite complété par le script à chaque lancement avec les informations de place dispo etc…
Le petit fichier css pour la mise en forme de la page html :

body {
	font-family: verdana;
	font-size: 12px;
}
.Tableau span {
	display:inline;
	float:left;
	border:1px solid #B12345;
	margin:1px;
	padding:4px;
}
.Tableau p {
	clear:left;
	margin:0px;
	padding:0px;
	height:100%; height:1em;
	font-size:12px;
}
.Tableau p.legende {font-weight:bold;font-size:13px}
.Tableau span.col {width:10%;font-style:bold;font-size:12px}

Si quelqu’un a la technique pour apeller le script de façon silencieuse et automatique au moment du démontage (via udev par exemple), je suis prenneur :smiley:

je comprends pas l’interet d’un tel script
je veut dire a la limite quand tu monte un disque mais la au demontage je comprends pas

[quote=“bobzer”]je comprends pas l’interet d’un tel script
je veut dire a la limite quand tu monte un disque mais la au demontage je comprends pas[/quote]

Ayant un très grand nombre de disque dur usb labélisés, et étant souvent en train de deplacer des données ici et la, j’en avais marre de renseigner à la main un fichier ods avec la place disponible sur chacun de mes disques. L’intérêt de ce script est donc de lister les données ainsi que la place disponible sur chacun des disques une fois mes ptites opérations de copie términées…
Il est de toute façon plus judicieux de lister le contenu d’un disque au démontage plutôt qu’au montage…

bonjour
j’ai pris un script de ping quelque pas plus haut et je voudrait ajouter un arret complet de la machine si aucune machine et connecté au réseau
Seulement je ne suis pas foutu de faire la moindre ligne de code
Quelqu’un pourrait m’aider (me le faire) :slightly_smiling:
Merci

[code]#!/usr/bin/perl

use strict;
use Net::Ping;

$|++;
print “Scan de ordinateurs :\n”;

my $nb = 0;
my $ping = Net::Ping->new(“icmp”, 0.3);

foreach my $i ( 10 … 60 ){
if ($ping->ping(“192.168.1.”.$i)){
++$nb;
print “192.168.1.$i\n”;
}else{
print ‘.’;
}
}
$ping->close();

print “Il y a $nb ordinateurs sur le réseau local.\n”;[/code]

Utilise la dernière version :slightly_smiling: (du moins que j’ai trouvé je lui vois une grosse “bizarrerie” que je virerais dans la journée)

[code]#!/usr/bin/perl

Voici un script écris en perl, un langage de script au niveau très utilisé dans le monde Unix.

Ce script donc est une adaptation d’un script précédement posté mais en simplifié à fin

de mieux coller à un usage serveur.

En effet ce script tente de découvrir les machines d’un réseau local simple.

J’entends par simple un réseau qui possède un masque de sous-réseau de 255.255.255.0

En effet ce script va tenter d’envoyer une requête ICMP à chaque adresse du réseau.

Sa rapidité viens du délai de timeout très cours en prenant comme postulat que les

réseau ethernet sont aujourd’hui suffisement rapide.

Ce script possède comme dépendances le module Net::Ping qu’il faudras

installer si vous souhaitez vous en servir (si vous ne souhaitez pas vous en servir c’est

inutile de l’installer à moins que vous en ayez un autre usage mais cela dépasse alors

le cadre de ce texte descriptif)

TODO :

- le programme n’a jamais était démontré

- il faudrait qu’il cherche sur l’ordinateur l’adresse du réseau

(ou le couple adresse IP de la machine + masque de sous réseau)

- je ne sais plus si ce code a déjà était licencié, peut être faudrait-il le faire ?

- le passage à perl 6 n’a pas était testé

- je ne sais pas non plus à partir de quel version de l’interpréteur perl ce script fonctionne

- internationaliser ce script voir si des variables ne devrais pas être nommées en anglais

- traduire ce commentaire

- traduire la future démonstration de ce programme

- analyser les performances de ce programme, le profiler et tenter d’arrêter

les goulôts d’étranglements

- trouver des packageurs pour que le programme soit facilement installable sur divers

distributions

- vérifier si le programme est portable sur OpenBSD, NetBSD et FreeBSD notamment

- vérifier les performances sur divers architectures

- déployer un dépôt dans une forge logicielle

use strict;
use Switch;
use Net::Ping;

Initialisation

sub sizetot ()
{
stty -a =~ /columns (\d*)/;
return $1;
}

my $nb = 0;
my $boucle = 0;
my $ping = Net::Ping->new(“icmp”, 0.3);

my $pourcent = 0;
my $size = 0;

$|++;

Déroulement

print “Scan des ordinateurs :\n”;

foreach my $i ( 1 … 254 ){
$size=$i/254*sizetot();
$pourcent=int($size/sizetot()*100);
my $u = length($bar) + 5;
if ($pourcent > 9){
++$u;
}

if ($ping->ping(“192.168.1.”.$i)){
++$nb;
}
}
$ping->close();
if ($nb == 0) {
system “shutdown -h now”;
}[/code]

Normalement je repasse dans le matinée pour virer des trucs qui vont être inutile pour toi.

Edit : J’ai enlevé les prints, je pense que tu l’utilise sur un serveur, non ?
Edit 2: J’ai retiré les appels à grep, cut et tr pour tout faire en perl.

Oui je l’utilise sur un serveur debian
merci je test ça se soir
encore merci

Edit: parfait ça fonctionne maintenant faut que je trouve pour le lancer au boot…
Encore Merci

Salut,

Merci pour ces merveilleux scripts qui ne disent pas ce qu’ils sont censés faire :slightly_smiling:

Je crois que c’est ici que l’on parlait il y a peu de ifconfig qui doit être accédé uniquement par root. On peut contourner le problème avec netstat -ei.

:smt041 Manque plus que la solution pour contourner iwconfig.
Merci :wink:

Il n’y a aucun souci pour faire tourner ifconfig ou iwconfig sous un user quelconque, c’est juste le path qui manque:

[code]francois@totoche:/tmp/V$ /sbin/iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wlan0 802.11bgn Nickname:"rtl8191SEVA2"
Mode:Managed Frequency=2.462 GHz Access Point: Not-Associated
Bit Rate:300 Mb/s
Retry:on RTS thr:off Fragment thr:off
Power Management:off
Link Quality=10/100 Signal level=0 dBm Noise level=-100 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

[/code]

[code]francois@totoche:/tmp/V$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:36:23:41:49:18
inet adr:192.168.1.245 Bcast:192.168.1.255 Masque:255.255.255.0
adr inet6: fe80::226:22ff:fe44:4808/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:13913 errors:0 dropped:0 overruns:0 frame:0
TX packets:14517 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:4215108 (4.0 MiB) TX bytes:1539453 (1.4 MiB)
Interruption:29 Adresse de base:0xc000

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:700 (700.0 B) TX bytes:700 (700.0 B)

wlan0 Link encap:Ethernet HWaddr 70:1a:14:52:24:f8
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interruption:19 Mémoire:ffffc200111a8000-ffffc200111a8100

francois@totoche:/tmp/V$
[/code] (bien sûr on n’a pas tous les droits)

L’idée c’était qu’en principe /sbin et /usr/sbin ne sont pas destiné à l’utilisateur mais à l’administrateur.

[quote=“fran.b”]Il n’y a aucun souci pour faire tourner ifconfig ou iwconfig sous un user quelconque, c’est juste le path qui manque:

[code]francois@totoche:/tmp/V$ /sbin/iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wlan0 802.11bgn Nickname:"rtl8191SEVA2"
Mode:Managed Frequency=2.462 GHz Access Point: Not-Associated
Bit Rate:300 Mb/s
Retry:on RTS thr:off Fragment thr:off
Power Management:off
Link Quality=10/100 Signal level=0 dBm Noise level=-100 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

[/code] (bien sûr on n’a pas tous les droits)[/quote]Merci de rappeler ça, je n’y avait pas pensé tout seul.

Sinon, vous ne pensez pas qu’être dans le group netdev devrait être suffisant pour manipuler /sbin/ifup /sbin/ifdown et /sbin/wpa_supplicant?
J’aimerais vraiment pouvoir éviter d’utiliser sudo et root dans un script de gestionnaire de connection wifi que j’écris.

[quote=“eol”]Sinon, vous ne pensez pas qu’être dans le group netdev devrait être suffisant pour manipuler /sbin/ifup /sbin/ifdown et /sbin/wpa_supplicant?
J’aimerais vraiment pouvoir éviter d’utiliser sudo et root dans un script de gestionnaire de connexion wifi que j’écris.[/quote]
À toi de configurer ta Debian en conséquence :slightly_smiling:
Il suffit de changer le groupe de ses binaires.