<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: bash конструкция</title>
    <link>https://opennet.ru/openforum/vsluhforumID1/82424.html</link>
    <description>всем привет! знатоки bash&apos;а подскажите конструкцию для следующей ситуации...&lt;br&gt;есть текстовый файл содержащий строки типа&lt;br&gt;192.168.0.10 85.15.24.68 1592&lt;br&gt;т.е. адрес источника, адрес назначения, порт назначения.&lt;br&gt;в скрипте я хочу сделать цикл, чтоб содержимое строки подставлялось в разные места команды, что то типа&lt;br&gt;while read line&lt;br&gt;  do&lt;br&gt;     iptables -t nat -A POSTROUTING -s $&apos;1-й параметр в строке&apos; -d $&apos;2-й параметр&apos; --dport $&apos;3-й парметр&apos; -j SNAT --to-source 78.105.12.1&lt;br&gt;  done &amp;lt; $TEXTFILE&lt;br&gt;типа в сетке есть клиентбанки, и их нужно натить на определнные адреса и порты, в реальный адрес. и чтобы не писать много строчек для каждого клиентбанка, охота это сделать через цикл, чтобы потом, когда будут появляться новые клиентбанки, можно было просто редактировать текстовик.&lt;br&gt;Или может есть какое то более элегантное решение?&lt;br&gt;</description>

<item>
    <title>bash конструкция (daevy)</title>
    <link>https://opennet.ru/openforum/vsluhforumID1/82424.html#5</link>
    <pubDate>Thu, 16 Oct 2008 07:31:12 GMT</pubDate>
    <description>по этому примеру получилось лучше это то что мне было нужно, модифицировал под себя&lt;br&gt;while read src dst dport; do&lt;br&gt;   iptables -t nat -A POSTROUTING -s $src -d $dst -p tcp --dport $dport -j SNAT --to-source 212.220.129.40&lt;br&gt;done &amp;lt; $TEXTFILE&lt;br&gt;&lt;br&gt;данные хранятся в текстовике потому что надо чтобы, некоторые люди, когда меня нет на месте длительное время, могли добавлять туда других клиентов не вникая в сущность Iptables&lt;br&gt;&lt;br&gt;Большое спасибо за помощь!&lt;br&gt;</description>
</item>

<item>
    <title>bash конструкция (daevy)</title>
    <link>https://opennet.ru/openforum/vsluhforumID1/82424.html#4</link>
    <pubDate>Thu, 16 Oct 2008 07:23:34 GMT</pubDate>
    <description>что такое &apos;cmt&apos; в while read src dst dpt cmt; do&lt;br&gt;и потом таблица где составляется, в теле скрипта?&lt;br&gt;</description>
</item>

<item>
    <title>ещё пример (Andrey Mitrofanov)</title>
    <link>https://opennet.ru/openforum/vsluhforumID1/82424.html#3</link>
    <pubDate>Thu, 16 Oct 2008 06:02:32 GMT</pubDate>
    <description>&amp;gt;Что касается bash-а - &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;tablicca() &#123; &lt;br&gt;&lt;br&gt;Вот ещё пример: как я у себя форварды портов клиентам на firehol (он сам - на баше) делал.&lt;br&gt;&lt;br&gt;#Forward pords&lt;br&gt;fwd_mail() &#123;&lt;br&gt;  for pp in 110 25; do #pop3+smtp&lt;br&gt;    ##### vv---тут ошибка: dst адрес не проверяется, но не суть&lt;br&gt;    dnat to &quot;$3:$pp&quot; inface &quot;$2&quot; src &quot;$1&quot; proto tcp dport &quot;$((pp+$&#123;4:-0&#125;))&quot;&lt;br&gt;    done&lt;br&gt;  snat to &quot;$PUBLIC_MYIP&quot; outface eth2 src &quot;$1&quot; dst &quot;$3&quot;&lt;br&gt;  &#125;&lt;br&gt;do_mail_clients() &#123;&lt;br&gt;  #&quot;Таблица&quot; клиентов port-forwarding-а: pop3+smtp =&amp;gt; внеш.сервер&lt;br&gt;  fwd_mail &quot;10.1.2.5 10.1.2.7 10.1.2.34&quot; eth1 &quot;$MAIL_SVR1&quot;&lt;br&gt;  fwd_mail &quot;192.168.13.115&quot; eth0 &quot;$MAIL_SVR1&quot;&lt;br&gt;#&lt;br&gt;MCLIENTS=&quot;192.168.13.52 192.168.13.96&quot;&lt;br&gt;  fwd_mail &quot;$MCLIENTS&quot; eth0 &quot;$MAIL_SVR2&quot;&lt;br&gt;  fwd_mail &quot;$MCLIENTS&quot; eth0 &quot;$MAIL_SVR3&quot; 5000&lt;br&gt;  fwd_mail &quot;$MCLIENTS&quot; eth0 &quot;$MAIL_SVR4&quot; 6000&lt;br&gt;  &#125;&lt;br&gt;do_mail_clients #####(1)&lt;br&gt;&lt;br&gt;### ROUTER:&lt;br&gt;router nat&lt;br&gt;#&lt;br&gt;fwd_mail() &#123;&lt;br&gt;  server &quot;smtp pop3&quot; accept dst &quot;$3&quot; inface &quot;$2&quot; src &quot;$1&quot;&lt;br&gt;  &#125;&lt;br&gt;    do_mail_clients #####(2)&lt;br&gt;&lt;br&gt;Вызов (1) генерирует несколько вызовов функций dnat и snat fi</description>
</item>

<item>
    <title>bash конструкция (Andrey Mitrofanov)</title>
    <link>https://opennet.ru/openforum/vsluhforumID1/82424.html#2</link>
    <pubDate>Thu, 16 Oct 2008 05:33:54 GMT</pubDate>
    <description>&amp;gt;while read line &lt;br&gt;&amp;gt;  do &lt;br&gt;&amp;gt;     iptables -t nat -A POSTROUTING -s $&apos;1-й &lt;br&gt;&amp;gt;параметр в строке&apos; -d $&apos;2-й параметр&apos; --dport $&apos;3-й парметр&apos; -j SNAT &lt;br&gt;&amp;gt;--to-source 78.105.12.1 &lt;br&gt;&amp;gt;  done &amp;lt; $TEXTFILE &lt;br&gt;&lt;br&gt;Что касается bash-а -&lt;br&gt;&lt;br&gt;tablicca() &#123;&lt;br&gt;cat &amp;lt;&amp;lt;EOT&lt;br&gt;10.0.0.10 pop3.mail.ru 110&lt;br&gt;10.0.0.12 mail.ya.ru 25      #ну, и т.д.&lt;br&gt;EOT&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;while read src dst dpt cmt; do&lt;br&gt;iptables -t nat -A POSTROUTING -s $src -d $dst --dport $dpt &#092;&lt;br&gt;-j SNAT --to-source 78.105.12.1&lt;br&gt;done &amp;lt;( tablicca )&lt;br&gt;&lt;br&gt;Можно вместо вызова функции собственно cat &amp;lt;&amp;lt;EOT вставить. С функцией можно воспользоваться таблицей ещё раз, если понадобится.&lt;br&gt;</description>
</item>

<item>
    <title>bash конструкция (daevy)</title>
    <link>https://opennet.ru/openforum/vsluhforumID1/82424.html#1</link>
    <pubDate>Thu, 16 Oct 2008 04:18:01 GMT</pubDate>
    <description>вобщем я сделал так, но может можно как то укоротить? или соптимизировать?&lt;br&gt;#!/bin/bash&lt;br&gt;TEXTFILE=&quot;/root/temp/addresses&quot;&lt;br&gt;while read line&lt;br&gt;  do&lt;br&gt;    iptables -t nat -A POSTROUTING -s &#096;echo -e &quot;$line&quot; &amp;#124;awk &apos;&#123;print $1&#125;&apos;&#096; -d &#096;echo -e &quot;$line&quot; &amp;#124;awk &apos;&#123;print $2&#125;&apos;&#096; -p tcp --dport &#096;echo -e &quot;$line&quot; &amp;#124;awk &apos;&#123;print $3&#125;&apos;&#096; -j SNAT --to-source 212.220.129.40&lt;br&gt;  done &amp;lt; $TEXTFILE&lt;br&gt;</description>
</item>

</channel>
</rss>
