Too many levels of symbolic links
harnis
Messages postés
70
Statut
Membre
-
harnis Messages postés 70 Statut Membre -
harnis Messages postés 70 Statut Membre -
Salut, j'essaye de mettre en place un script de limitation de l'utilisation de la bande passante basé sur Iptables.
Une fois le script crée, j'ai crée un lien symbolique vers /etc/init.d/
Et quand j'esaye de le lancer :
# /etc/init.d/tc.sh start
j'ai un message d'erreur :
bash : too many levels of symbolic links....
J'ai cherché sur google mais franchement je nage... si qlq'un à une idée ou une piste pour m'aider ce serait super.
Merci à tous.
Une fois le script crée, j'ai crée un lien symbolique vers /etc/init.d/
Et quand j'esaye de le lancer :
# /etc/init.d/tc.sh start
j'ai un message d'erreur :
bash : too many levels of symbolic links....
J'ai cherché sur google mais franchement je nage... si qlq'un à une idée ou une piste pour m'aider ce serait super.
Merci à tous.
A voir également:
- Linux too many levels of symbolic links
- Many cam - Télécharger - TV & Vidéo
- Linux reader - Télécharger - Stockage
- Path of exile 2 - Guide
- Toutou linux - Télécharger - Systèmes d'exploitation
- Linux mint 22.1 - Accueil - Linux
19 réponses
Salut,
J'ai essayé de voir si le lien tournait en boucle alors j'ai tapé la commande suivante :
ls -l /etc/init.d/tc.sh
lrwxrwxrwx 1 root root 5 fév 23 08:16 /etc/init.d/tc.sh -> tc.sh
Ton lien, il pointe sur lui même là !!! Alors que si j'ai bien tout suivi, il devrait pointer vers "/sbin/tc.sh, non ?
lrwxrwxrwx 1 root root 5 fév 23 08:16 /etc/init.d/tc.sh -> /sbin/tc.sh
J'ai essayé de voir si le lien tournait en boucle alors j'ai tapé la commande suivante :
ls -l /etc/init.d/tc.sh
lrwxrwxrwx 1 root root 5 fév 23 08:16 /etc/init.d/tc.sh -> tc.sh
Ton lien, il pointe sur lui même là !!! Alors que si j'ai bien tout suivi, il devrait pointer vers "/sbin/tc.sh, non ?
lrwxrwxrwx 1 root root 5 fév 23 08:16 /etc/init.d/tc.sh -> /sbin/tc.sh
Tu dois avoir un lien symbolique x qui pointe sur y qui lui même tape sur x, d'où une boucle et cette erreur. Pour plus d'infos tape :
Bonne chance
man ln
Bonne chance
je m'en sors pas.
Voici la procédure que j'ai trouvé sur internet :
Créez un fichier tc.sh et copiez-collez ceci :
Citation:
#!/bin/bash
#
# Tous les débits sont en Kbits, donc pour récuperer des kilo-octets(Ko), divisez ce chiffre par 8
#
TC=/sbin/tc
DNLD=40Kbit # Limite de download
DWEIGHT=4Kbit # coefficient de DOWNLOAD (Weight Factor) ~ 1/10 of DOWNLOAD Limit
UPLD=25KBit # Limite d'upload Limit
UWEIGHT=2Kbit # Coefficient d'UPLOAD (Weight Factor)
tc_start() {
$TC qdisc add dev eth1 root handle 11: cbq bandwidth 100Mbit avpkt 1000 mpu 64
$TC class add dev eth1 parent 11:0 classid 11:1 cbq rate $DNLD weight $DWEIGHT allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth1 parent 11:0 protocol ip handle 4 fw flowid 11:1
$TC qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 mpu 64
$TC class add dev eth0 parent 10:0 classid 10:1 cbq rate $UPLD weight $UWEIGHT allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth0 parent 10:0 protocol ip handle 3 fw flowid 10:1
}
tc_stop() {
$TC qdisc del dev eth1 root
$TC qdisc del dev eth0 root
}
tc_restart() {
tc_stop
sleep 1
tc_start
}
tc_show() {
echo ""
echo "eth1:"
$TC qdisc show dev eth1
$TC class show dev eth1
$TC filter show dev eth1
echo ""
echo "eth0:"
$TC qdisc show dev eth0
$TC class show dev eth0
$TC filter show dev eth0
echo ""
}
case "$1" in
start)
echo -n "Starting bandwidth shaping: "
tc_start
echo "done"
;;
stop)
echo -n "Stopping bandwidth shaping: "
tc_stop
echo "done"
;;
restart)
echo -n "Restarting bandwidth shaping: "
tc_restart
echo "done"
;;
show)
tc_show
;;
*)
echo "Usage: /etc/init.d/tc.sh {start|stop|restart|show}"
;;
esac
exit 0
Créez un lien pour pouvoir lancer ce script comme un service :
Citation:
chmod 700 tc.sh <--- pour le rendre exécutable
ln -s tc.sh /etc/init.d/tc.sh
Ensuite saisissez l'adresse ip du PC que vous souhaitez brider dans une règle iptables :
Citation:
iptables -t mangle -A FORWARD -s ! 192.168.1.0/24 -d 192.168.1.55 -j MARK --set-mark 4
iptables -t mangle -A FORWARD -s 192.168.1.55 -j MARK --set-mark 3
Ici je bride le poste ayant pour IP 192.168.1.55 qui va downloader à 4 koctets/s et up à 2.
Pour que ça marche n'oubliez pas de lancer tc.sh
Citation:
/etc/init.d/tc.sh start
Voilà.
hé bé ça marche po !
Quand je lance la commande :
#/etc/init.d/tc.sh start
j'ai le message d'erreur...
Voici la procédure que j'ai trouvé sur internet :
Créez un fichier tc.sh et copiez-collez ceci :
Citation:
#!/bin/bash
#
# Tous les débits sont en Kbits, donc pour récuperer des kilo-octets(Ko), divisez ce chiffre par 8
#
TC=/sbin/tc
DNLD=40Kbit # Limite de download
DWEIGHT=4Kbit # coefficient de DOWNLOAD (Weight Factor) ~ 1/10 of DOWNLOAD Limit
UPLD=25KBit # Limite d'upload Limit
UWEIGHT=2Kbit # Coefficient d'UPLOAD (Weight Factor)
tc_start() {
$TC qdisc add dev eth1 root handle 11: cbq bandwidth 100Mbit avpkt 1000 mpu 64
$TC class add dev eth1 parent 11:0 classid 11:1 cbq rate $DNLD weight $DWEIGHT allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth1 parent 11:0 protocol ip handle 4 fw flowid 11:1
$TC qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 mpu 64
$TC class add dev eth0 parent 10:0 classid 10:1 cbq rate $UPLD weight $UWEIGHT allot 1514 prio 1 avpkt 1000 bounded
$TC filter add dev eth0 parent 10:0 protocol ip handle 3 fw flowid 10:1
}
tc_stop() {
$TC qdisc del dev eth1 root
$TC qdisc del dev eth0 root
}
tc_restart() {
tc_stop
sleep 1
tc_start
}
tc_show() {
echo ""
echo "eth1:"
$TC qdisc show dev eth1
$TC class show dev eth1
$TC filter show dev eth1
echo ""
echo "eth0:"
$TC qdisc show dev eth0
$TC class show dev eth0
$TC filter show dev eth0
echo ""
}
case "$1" in
start)
echo -n "Starting bandwidth shaping: "
tc_start
echo "done"
;;
stop)
echo -n "Stopping bandwidth shaping: "
tc_stop
echo "done"
;;
restart)
echo -n "Restarting bandwidth shaping: "
tc_restart
echo "done"
;;
show)
tc_show
;;
*)
echo "Usage: /etc/init.d/tc.sh {start|stop|restart|show}"
;;
esac
exit 0
Créez un lien pour pouvoir lancer ce script comme un service :
Citation:
chmod 700 tc.sh <--- pour le rendre exécutable
ln -s tc.sh /etc/init.d/tc.sh
Ensuite saisissez l'adresse ip du PC que vous souhaitez brider dans une règle iptables :
Citation:
iptables -t mangle -A FORWARD -s ! 192.168.1.0/24 -d 192.168.1.55 -j MARK --set-mark 4
iptables -t mangle -A FORWARD -s 192.168.1.55 -j MARK --set-mark 3
Ici je bride le poste ayant pour IP 192.168.1.55 qui va downloader à 4 koctets/s et up à 2.
Pour que ça marche n'oubliez pas de lancer tc.sh
Citation:
/etc/init.d/tc.sh start
Voilà.
hé bé ça marche po !
Quand je lance la commande :
#/etc/init.d/tc.sh start
j'ai le message d'erreur...
Je pense que le problème vient plus du lien que du script. Ne crée pas de lien et met directement ton script dans /etc/init.d
Bonne chance
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ah oui mais c'est le script shell qu'il faut mettre dans /etc/init.d ! Et ce script fait appel au binaire. J'ai l'impression que tu as mis tc dans /etc/init.d alors qu'il fallait le laisser dans /sbin.
Ok super merci je crois que cé ça. Je testerai ça lundi.
Merci en tout cas.
Je comprend un peu plus chaque jours le fonctionnement de la bête... (je veux dire linux en général)
A+
Merci en tout cas.
Je comprend un peu plus chaque jours le fonctionnement de la bête... (je veux dire linux en général)
A+
J'ai essayé de voir si le lien tournait en boucle alors j'ai tapé la commande suivante :
ls -l /etc/init.d/tc.sh
lrwxrwxrwx 1 root root 5 fév 23 08:16 /etc/init.d/tc.sh -> tc.sh
J'ai essayé plusieur solution, notamment de le lancer directement depuis le répertoire où je l'avais créer (/root/) mais quand je veux le lancer j'ai ce message d'erreur :
#cannot execute binary file
Voilà...
Merci pour votre aide
ls -l /etc/init.d/tc.sh
lrwxrwxrwx 1 root root 5 fév 23 08:16 /etc/init.d/tc.sh -> tc.sh
J'ai essayé plusieur solution, notamment de le lancer directement depuis le répertoire où je l'avais créer (/root/) mais quand je veux le lancer j'ai ce message d'erreur :
#cannot execute binary file
Voilà...
Merci pour votre aide
j'ai essayé et voilà :
j'ai crée le lien symolique
ln -s /sbin/tc.sh /etc/init.d/tc.sh
j'ai regardé qu'il pointait bien, ce qui à l'air d'être le cas.
[root@serveur sbin]# ls -l /etc/init.d/tc.sh
lrwxrwxrwx 1 root root 11 fév 23 09:19 /etc/init.d/tc.sh -> /sbin/tc.sh*
J'ai essayé de le lancer et voila...
[root@serveur sbin]# /etc/init.d/tc.sh start
-bash: /etc/init.d/tc.sh: cannot execute binary file
j'ai crée le lien symolique
ln -s /sbin/tc.sh /etc/init.d/tc.sh
j'ai regardé qu'il pointait bien, ce qui à l'air d'être le cas.
[root@serveur sbin]# ls -l /etc/init.d/tc.sh
lrwxrwxrwx 1 root root 11 fév 23 09:19 /etc/init.d/tc.sh -> /sbin/tc.sh*
J'ai essayé de le lancer et voila...
[root@serveur sbin]# /etc/init.d/tc.sh start
-bash: /etc/init.d/tc.sh: cannot execute binary file
Euh...! Juste un truc.
Dans ton script la 1ère variable à être initialisée est :
TC=/sbin/tc
Est-ce que ce serait pas mieux :
TC=/sbin/tc.sh
;-))
Dans ton script la 1ère variable à être initialisée est :
TC=/sbin/tc
Est-ce que ce serait pas mieux :
TC=/sbin/tc.sh
;-))
j'ai modifié le fichier /sbin/tc.sh et remplacé la 1ère variable :
TC=/sbin/tc.sh
Ensuite
j'ai essayé de le démarrer :
/etc/init.d/tc.sh start
-bash: /etc/init.d/tc.sh: cannot execute binary file
TC=/sbin/tc.sh
Ensuite
j'ai essayé de le démarrer :
/etc/init.d/tc.sh start
-bash: /etc/init.d/tc.sh: cannot execute binary file
:-[ désolé, mais je connaissais pas la commande "tc". Je cite le "man" :Donc tu peux remettre ta variable à :
TC=/sbin/tc
Autre chose, la commande existe bien sur ton système ?
TC=/sbin/tc
Autre chose, la commande existe bien sur ton système ?
#urpmi tcsh
Tout est déjà installé
Je vais péter un plomb. Cela parait tout simple et je galère grave. Franchement je pige pas. J'ai du oulbié un truc évident qlq part mais je sais pas où ?
Tout est déjà installé
Je vais péter un plomb. Cela parait tout simple et je galère grave. Franchement je pige pas. J'ai du oulbié un truc évident qlq part mais je sais pas où ?
Nan ! Ca n'a rien à voir avec "tcsh" qui est un shell.
Là on parle de la commande "tc" (man tc) :
Là on parle de la commande "tc" (man tc) :
DESCRIPTION Tc is used to configure Traffic Control in the Linux kernel. Traffic Control consists of the following: SHAPING When traffic is shaped, its rate of transmission is under con- trol. Shaping may be more than lowering the available bandwidth - it is also used to smooth out bursts in traffic for better network behaviour. Shaping occurs on egress. SCHEDULING By scheduling the transmission of packets it is possible to improve interactivity for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering is also called prioritizing, and happens only on egress. POLICING Where shaping deals with transmission of traffic, policing per- tains to traffic arriving. Policing thus occurs on ingress. DROPPING Traffic exceeding a set bandwidth may also be dropped forthwith, both on i Processing of traffic is controlled by three kinds of objects: qdiscs, classes and filters.Les deux sont totalement différents :
[jp@MDK tmpfs]$ whereis tc tc: /sbin/tc /usr/share/man/man8/tc.8.bz2 [jp@MDK tmpfs]$ whereis tcsh tcsh: /bin/tcsh /usr/share/man/man1/tcsh.1.bz2 [jp@MDK tmpfs]$;-))
oui je sais... je me suis planté dans ce que j'ai écrit.
J'ai bien la commade TC sur mon système je viens de vérifier.
A mon avis le problème ne vient pas de là.
C'est le :
#cannot execute binary file
qui me pose un soucis car si je ne peux pas exécuter de fichier binaire je ne vois pas comment mon ordi fonctionne lol...
Merci en tout cas de ton aide.
J'ai bien la commade TC sur mon système je viens de vérifier.
A mon avis le problème ne vient pas de là.
C'est le :
#cannot execute binary file
qui me pose un soucis car si je ne peux pas exécuter de fichier binaire je ne vois pas comment mon ordi fonctionne lol...
Merci en tout cas de ton aide.
C'est peut être un binaire qui ne correspond pas à ton architecture de machine. Comment as-tu installé ce fameux tc ? Quelle version as-tu pris ? Que te donne la commande :
Bonne chance
uname -a
Bonne chance
Bon j'ai trouvé la solution avec cbq
Il faut en 1er l'installer.
Ensuite créer un fichier dans /etc/sysconfig/cbq/
vous pouvez le nommer comme vous voulez
et i mettre ça dedans
DEVICE=eth1,100Mbit,1Mbit
RATE=13Kbit
WEIGHT=10Kbit
PRIO=5
RULE=(ip de la machine qu'on veut limiter)
ensuite dans le répertoire ou vous avez le fichier du programme exécutable par exmple cbq.init-v0.7.3*
Vous le lancer :
# cbq-init-v0.7.3 start
Alors là la machine va downloader à 13k et uploader à 10.
Voilà
j'ai testé et ça marche
Il faut en 1er l'installer.
Ensuite créer un fichier dans /etc/sysconfig/cbq/
vous pouvez le nommer comme vous voulez
et i mettre ça dedans
DEVICE=eth1,100Mbit,1Mbit
RATE=13Kbit
WEIGHT=10Kbit
PRIO=5
RULE=(ip de la machine qu'on veut limiter)
ensuite dans le répertoire ou vous avez le fichier du programme exécutable par exmple cbq.init-v0.7.3*
Vous le lancer :
# cbq-init-v0.7.3 start
Alors là la machine va downloader à 13k et uploader à 10.
Voilà
j'ai testé et ça marche
#uname -a
Linux serveur 2.4.22-10mdk #1 Thu Sep 18 12:30:58 CEST 2003 i686unknown unknown GNU/Linux
Le paquet tc s'est installé par défaut.
Si vous connaissez une autre solution pour limiter le download sur une machine précise je suis preneur parce que là franchement je ne vois pas pkoi ça marche pas.
Merci
Linux serveur 2.4.22-10mdk #1 Thu Sep 18 12:30:58 CEST 2003 i686unknown unknown GNU/Linux
Le paquet tc s'est installé par défaut.
Si vous connaissez une autre solution pour limiter le download sur une machine précise je suis preneur parce que là franchement je ne vois pas pkoi ça marche pas.
Merci