{"id":4465,"date":"2015-04-04T22:32:19","date_gmt":"2015-04-04T20:32:19","guid":{"rendered":"http:\/\/www.imacandi.net\/sin\/blog\/?p=4465"},"modified":"2015-04-04T22:32:19","modified_gmt":"2015-04-04T20:32:19","slug":"scriptul","status":"publish","type":"post","link":"https:\/\/www.imacandi.net\/sin\/blog\/2015\/04\/04\/scriptul.html","title":{"rendered":"scriptul"},"content":{"rendered":"<p style=\"text-align: justify;\">Ziceam in <a title=\"&quot;internet&quot; paralel (3)\" href=\"http:\/\/www.imacandi.net\/sin\/blog\/2015\/04\/04\/internet-paralel-3.html\">postul de mai devreme<\/a> ca io stiu scripting pentru basic stuff, dar gasii o solutie care pare sa faca ce trebuie:<\/p>\n<pre>#!\/bin\/bash\r\nlet j=0\r\nlet t=1\r\nlet s=20\r\nlet k=0\r\np=(`echo {a..z}{a..z}{a..z}`)\r\nfor c in `seq 0 62`; do\r\n for i in `seq 0 4 255`; do\r\n  ip tunnel add g${p[$c]}$t mode gre local 10.15.1.2 remote 10.16.1.2 ttl 255 key 1$k$c$i\r\n  ip addr add 10.$s.0.$[$i+1]\/30 peer 10.$s.0.$[$i+2]\/30 dev g${p[$c]}$t\r\n  ip link set dev g${p[$c]}$t up\r\n j=$[$j+1]\r\n c=$[$c+1]\r\n done\r\nlet j=0\r\nt=$[$t+1]\r\ns=$[$s+1]\r\nk=$[$k+1]\r\ndone<\/pre>\n<p>La rulare (daca adaug <strong>echo<\/strong> in fata comenzilor de iproute2) zice asa:<\/p>\n<pre>sh s | grep key | uniq | wc -l\r\n\u00a0 \u00a0 4032<\/pre>\n<p>Unde <strong>s<\/strong> este numele scriptului. Logic, nu? :))<\/p>\n<p>Si cheile sunt unice, ca la asta imi era tarsala sa nu se incalece pe undeva:<\/p>\n<pre>sh s | grep key | cut -d\" \" -f 14 | uniq | wc -l\r\n\u00a0 \u00a0 4032<\/pre>\n<p>Posibil BUG:<\/p>\n<p style=\"text-align: justify;\">Din motive care imi scapa, din cand in cand, cand vrea sa adauge un tunel, kernelul intoarce ca nu poate adauga gre0 desi scriptul incearca cu totul alt nume. Se intampla cam de 5 ori la 4023 de iteratii si drept urmare adauga doar 4027 de tunele (ceea ce oricum este mai mult decat nevoie pe o singura masina)<\/p>\n<p>Rulat cu <strong>set -x<\/strong>, outputul arata asa cand ii da cu virgula:<\/p>\n<pre>+ j=17\r\n+ c=61\r\n+ for i in '`seq 0 4 255`'\r\n+ ip tunnel add gacj45 mode gre local 10.15.1.2 remote 10.16.1.2 ttl 255 key 1446168\r\n<strong>add tunnel \"gre0\" failed: File exists<\/strong>\r\n+ ip addr add 10.64.0.69\/30 peer 10.64.0.70\/30 dev gacj45\r\n<strong>Cannot find device \"gacj45\"<\/strong>\r\n+ ip link set dev gacj45 up\r\n<strong>Cannot find device \"gacj45\"<\/strong><\/pre>\n<p style=\"text-align: justify;\">N-am nici o idee de ce face asta, ca pare totul ok ca si comenzi date. Se strica de la <strong>ip tunnel add<\/strong> si normal ca restul de comenzi nu merg ca numele ala de cap de tunel nu exista.<\/p>\n<p style=\"text-align: justify;\">Si ca sa sterg turma de tunele, ii dau in cap cu asta:<\/p>\n<pre>for i in `ip a l | grep NONE | cut -d\" \" -f2 | cut -d\"@\" -f1`; do ip tunnel del $i; done<\/pre>\n<p>Now beware of my newly acquired mad scripting skillz :))<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ziceam in postul de mai devreme ca io stiu scripting pentru basic stuff, dar gasii o solutie care pare sa faca ce trebuie: #!\/bin\/bash let j=0 let t=1 let s=20 let k=0 p=(`echo {a..z}{a..z}{a..z}`) for c in `seq 0 62`; do for i in `seq 0 4 255`; do ip tunnel add g${p[$c]}$t mode gre &hellip; <a href=\"https:\/\/www.imacandi.net\/sin\/blog\/2015\/04\/04\/scriptul.html\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">scriptul<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"ngg_post_thumbnail":0,"footnotes":""},"categories":[2],"tags":[7],"class_list":["post-4465","post","type-post","status-publish","format-standard","hentry","category-diverse","tag-computers"],"_links":{"self":[{"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/posts\/4465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/comments?post=4465"}],"version-history":[{"count":4,"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/posts\/4465\/revisions"}],"predecessor-version":[{"id":4469,"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/posts\/4465\/revisions\/4469"}],"wp:attachment":[{"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/media?parent=4465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/categories?post=4465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.imacandi.net\/sin\/blog\/wp-json\/wp\/v2\/tags?post=4465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}