Lorsque j'ai ajouté la commande de délai, paramiko retourne "2" comme état de sortie (alors qu'il renvoie "0" pour le réglage de la commande de bande passante). Est-ce que 2 va bien? (Googling n'a pas aidé avec cela, je suppose que 2 doit être une erreur quelconque).'RTNETLINK répond: Le fichier existe'
La commande que j'utilise est: -
delay_cmd = "sudo tc qdisc add dev eth0 parent 1: handle 1: netem delay %dms" %(delay)
Nous essayons essentiellement de suivre ceci:
# tc qdisc add dev eth0 root netem delay 100ms
d'un tutoriel en ligne.
Le bloc de commandes qui doit définir le bw, le filtre et le retard est celui-ci. (Je devine que je pourrais être en train de jouer avec les identifiants des parents/classe). Pouvez-vous voir ce que je pourrais faire de mal?
cmd2 = "sudo tc class add dev %s parent 1: classid 1:1 htb rate %dmbps ceil %dmbps" % (interface, bandwidth, 2*bandwidth)
filter_cmd = "sudo tc filter add dev %s protocol ip parent 1:0 prio 1 u32 match ip dst %s/%d flowid 1:1" % (interface, ip, subnetmasklength)
delay_cmd = "sudo tc qdisc add dev eth0 parent 1:0 handle 1: netem delay %dms" %(delay)
C'est l'erreur que je reçois:
'RTNETLINK answers: File exists'
Ceci est notre script pour régler le retard et la bande passante:
def exec_bw_config2(ssh, interface, bandwidth, ip, subnetmasklength, delay):
clear_bw_config2(ssh, interface)
# create a qdisc (queuing discipline), 12 is default class
cmd1 = "sudo tc qdisc add dev %s root handle 1: htb default 12" % interface
print cmd1
block_exec(ssh, cmd1)
# define the performance for default class
cmd2 = "sudo tc class add dev %s parent 1: classid 1:1 htb rate %dmbps ceil %dmbps" % (interface, bandwidth, 2*bandwidth)
print cmd2
block_exec(ssh, cmd2)
filter_cmd = "sudo tc filter add dev %s protocol ip parent 1:0 prio 1 u32 match ip dst %s/%d flowid 1:1" % (interface, ip, subnetmasklength)
print filter_cmd
block_exec(ssh, filter_cmd)
delay_cmd = "sudo tc qdisc add dev eth0 parent 1: handle 1: netem delay %dms" %(delay)
print delay_cmd
block_exec(ssh, delay_cmd)
donc quelque chose de mal avec delay_cmd ci-dessus?
Voici comment nous l'appelons dans notre code:
def main():
myhosts = ["10.0.1.192", "10.0.1.191", "10.0.1.190"]
username="ubuntu"
port=22
#key = get_private_key()
for host in myhosts:
ssh = get_ssh(username, host, port)
clear_bw_config2(ssh, "eth0")
exec_bw_config2(ssh, "eth0", int(sys.argv[1]) , "10.0.1.0", 24, int(sys.argv[2]))
# iterate over hosts here
# for everyhost,
# 1. create ssh connection
# 2. run the exec_bw_config with params
return
Sur une autre note, quelle est la différence entre parent 1: handle
et parent 1:2 handle
en soi?