Сообщение от X0R:
Катюш, я же не африка...
#!/bin/bash # TMPDIR=/tmp/geoiptban IP_BBASE=$TMPDIR/bbase.csv IP_EBASE=$TMPDIR/ebase.csv DB_ZIP=$TMPDIR/db.zip PERL=/usr/bin/perl FILE_BCOUNTRY=$1 COUNTRY_DB_URL=http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip mkdir -p $TMPDIR # Стягиваем и распаковываем базу айпишников. wget -q -O $DB_ZIP $COUNTRY_DB_URL unzip -p $DB_ZIP > $IP_BBASE # Убираем лишние символы из базы, для простоты обработки. if [ -e "$IP_BBASE" ] then cp $IP_BBASE $IP_EBASE $PERL -pi -e 's/"//g' $IP_EBASE else echo "Source ip-base-file not found." exit 0; fi # Обработка базы. Форматируем базу сперва в вид диапазонов ip-адресов, а потом в список подсетей. # Получившиеся подсети скармливаем iptables'у. if [ -e "$FILE_BCOUNTRY" ] then for country in $(cat ${FILE_BCOUNTRY}) do grep $country $IP_EBASE | awk -F "," '{print $1," - ",$2}' > $TMPDIR/$country.il for ((i=1;i<=$(wc -l ${TMPDIR}/${country}.il | awk '{print $1}');i++)) do ipcalc $(head -n ${i} ${TMPDIR}/${country}.il | tail -n 1) | grep -v deaggregate >> $TMPDIR/$country.nl done done for country_network_list in $(ls ${TMPDIR} | grep nl) do for ((i=1;i<=$(wc -l ${TMPDIR}/$country_network_list | awk '{print $1}');i++)) do iptables -t filter -A INPUT -s $(head -n ${i} ${TMPDIR}/$country_network_list | tail -n 1) -j DROP done done else echo "List of blocked countries not found." exit 0; fi rm -rf $TMPDIR
Сообщение от silly:
И perl и awk являются гораздо более выразительными языками, чем bash.
Сообщение от Hip-Hop:
if [ -e "$IP_BBASE" ] then cp $IP_BBASE $IP_EBASE $PERL -pi -e 's/"//g' $IP_EBASE else echo "Source ip-base-file not found." exit 0;
Сообщение от Hip-Hop:
X0R, то-есть, у тебя получается, что вроде бы "мощный язык" системного автоматизирования есть, а применить его не с чем.
Сообщение от silly:
Разумней обойтись без bash'а (и без PowerShell, раз уж на то пошло), дорогие мои любители кактусов.
Сообщение от silly:
Любой шелл годится только для интерактивного использования, имхо. Скриптами меряться абсолютно бессмысленно.
Сообщение от Hip-Hop:
а я что? Африка?
Сообщение от Hip-Hop:
Такого ты уже не сделаешь в powershell?
Сообщение от :
function Add-FirewallRule {
param(
$name,
$tcpPorts,
$appName = $null,
$serviceName = $null
)
$fw = New-Object -ComObject hnetcfg.fwpolicy2
$rule = New-Object -ComObject HNetCfg.FWRule
$rule.Name = $name
if ($appName -ne $null) { $rule.ApplicationName = $appName }
if ($serviceName -ne $null) { $rule.serviceName = $serviceName }
$rule.Protocol = 6 #NET_FW_IP_PROTOCOL_TCP
$rule.LocalPorts = $tcpPorts
$rule.Enabled = $true
$rule.Grouping = "@firewallapi.dll,-23255"
$rule.Profiles = 7 # all
$rule.Action = 1 # NET_FW_ACTION_ALLOW
$rule.EdgeTraversal = $false
$fw.Rules.Add($rule)
}
# Sample Usage
Add-FirewallRule "Test port 1234" "1234" $null $null
Add-FirewallRule "Test port 5555-6666" "5555-6666" $null $null
Add-FirewallRule "Test port 2222 Calc" 2222 "c:\windows\system32\calc.exe" $null
Add-FirewallRule "Test port 3333 W3SVC" 3333 $null "W3SVC"
Сообщение от Hip-Hop:
то-есть, у тебя получается, что вроде бы "мощный язык" системного автоматизирования есть, а применить его не с чем.
Сообщение от X0R:
что делает этот скрипт?
Сообщение от X0R:
Add-FirewallRule "Test port 2222 Calc" 2222 "c:\windows\system32\calc.exe" $null
Сообщение от X0R:
Кстати, как ты будешь работать с OpenOffice из bash? Я уже не первый раз тебя об этом спрашиваю
Сообщение от Hip-Hop:
это какая-то функция которая добавляет куда-то какие-то правила?
Сообщение от Hip-Hop:
Синтаксис вымораживает мозг.
Сообщение от Hip-Hop:
А что надо? (Пропустил мимо ушей)
Сообщение от X0R:
гляди как может PowerShell http://blogs.msdn.com/b/tomholl/arch...owershell.aspx
Сообщение от X0R:
я про твой скрипт спрашивал
Сообщение от silly:
У меня есть кое-что для OpenOffice:
Сообщение от Hip-Hop:
напиши мне хоть одно правило с трассировкой соединения (по флагам в пакете)
Сообщение от X0R:
практическое применение?
Сообщение от X0R:
из имеющихся текстовых файлов, подготовить соответствующим образом отформатированные документы.
Сообщение от Hip-Hop:
приведи пример на powershell, чтобы я понял отчего плясать.
Сообщение от :
for($i = 0; $i -le $lines.Length; $i++)
{
if ($lines[$i].IndexOf("") -eq -1)
{$text.AppendLine($lines[$i])}
else
{$i += 4}
}
$rng = $gkK.Range([ref]0, [ref]0)
$rng.Text = $text
$start = $gkK.Content.Start
$end = $gkK.Content.End
$rng = $gkK.Range([ref]$start, [ref]$end)
$gkK.Content.Select()
$oWord.Selection.Font.Name = "Courier New"
$oWord.Selection.Font.Size = 10
$oWord.Selection.ParagraphFormat.SpaceBefore = 0
$oWord.Selection.ParagraphFormat.SpaceAfter = 0
$oWord.Selection.ParagraphFormat.LineSpacing = 12
$gkK.PageSetup.LeftMargin = $pntInCm * 1
$gkK.PageSetup.RightMargin = $pntInCm * 1
$gkK.PageSetup.TopMargin = $pntInCm * 1
$gkK.PageSetup.BottomMargin = $pntInCm * 1
$gkK.SaveAs([ref][System.String]::Concat($gkDataDir, "\К-", $gkNum, ".doc"), [ref]$docFormat)
Сообщение от Hip-Hop:
На хабре на bash игры вон пишут
Сообщение от X0R:
пляши
Сообщение от X0R:
на cmd (который не чета PowerShell ) тоже
Сообщение от Hip-Hop:
а такое слабо
Сообщение от :
Если бы я сразу учел, что кодов операций за две сотни, то не стал бы писать эмулятор
Сообщение от X0R:
Что из использованного в этом скрипте принципиально нельзя сделать в винде?
Сообщение от X0R:
из имеющихся текстовых файлов, подготовить соответствующим образом отформатированные документы.
Сообщение от Hip-Hop:
Относительно сабжа
Сообщение от X0R:
а сможешь ли ты использовать этот API из bash?
Сообщение от Hip-Hop:
а что под этим понимается?
Сообщение от X0R:
А если мы хотим работать с уже открытым документом? Например динамически внося получаемую информацию. Каждый раз будем генерировать макрос и пероткрывать документ?
Сообщение от X0R:
Каждый раз будем генерировать макрос и пероткрывать документ?