Получаем статус
Код: Выделить всё
select b.id, b.int_status, b.is_deleted
from accounts AS b
where b.int_status = 1
and b.is_deleted = 0
Код: Выделить всё
SELECT INET_NTOA(4294967295 & ip) FROM ip_groups WHERE is_deleted=0;
Код: Выделить всё
select b.id, b.int_status, b.is_deleted
from accounts AS b
where b.int_status = 1
and b.is_deleted = 0
Код: Выделить всё
SELECT INET_NTOA(4294967295 & ip) FROM ip_groups WHERE is_deleted=0;
Код: Выделить всё
select b.id, b.int_status, INET_NTOA(4294967295 & ip), b.is_deleted from accounts AS b,ip_groups where b.int_status = 1 and b.is_deleted = 0 and ip_groups.id=b.id order by b.id;
Код: Выделить всё
SELECT u.full_name, a.id, u.login, INET_NTOA(ip & 4294967295) as ip, a.int_status
FROM ip_groups i, iptraffic_service_links isl, service_links sl, users u, accounts a
WHERE i.is_deleted='0'
AND isl.is_deleted='0'
AND sl.is_deleted='0'
AND i.ip_group_id=isl.ip_group_id
AND isl.id=sl.id
AND sl.user_id=u.id
AND a.id = u.basic_account
and a.is_deleted = 0
order by a.id;
спасибо работает , только надо еще условие добавитьYasasha писал(а):можно, например, вот так:
работает без всяких модификаций базыКод: Выделить всё
SELECT u.full_name, a.id, u.login, INET_NTOA(ip & 4294967295) as ip, a.int_status FROM ip_groups i, iptraffic_service_links isl, service_links sl, users u, accounts a WHERE i.is_deleted='0' AND isl.is_deleted='0' AND sl.is_deleted='0' AND i.ip_group_id=isl.ip_group_id AND isl.id=sl.id AND sl.user_id=u.id AND a.id = u.basic_account and a.is_deleted = 0 order by a.id;
Код: Выделить всё
and a.int_status = 1
Код: Выделить всё
mysql --skip-column-names -u root -p'somepass' -D UTM5 < /111/rfw.sql > rfw.log
cat rfw.log | while read line
do
ip=`printf "$line" | awk '{print $3}'`
echo "access-template 105 test1 host $ip any" >> ip_cisco
echo "access-template 106 test2 any host $ip" >> ip_cisco
done
Код: Выделить всё
#!/usr/bin/expect
spawn telnet -K хх.хх.хх.хх
expect "Username:" { send "user\n"}
expect "Password:" { send "pass\n"}
expect "#" {send "copy http://ser.ver.ip.add/shape.cfg running-config\n"}
expect "Destination filename" {send "\n"}
expect "#" {send "quit\n"}
Код: Выделить всё
<?php
@ini_set("display_errors", "1");
error_reporting(E_ALL);
$db_host='xx.xx.xx.xx:xxxx';
$db_base='UTM5';
$db_user='аываы';
$db_password='ываываыва';
$CISCO_IP = 'xx.xx.xx.xx';
$CISCO_LOGIN = 'юзер';
$CISCO_PASSW = 'пасвордюзера';
$log_file = "/netup/utm5/log/block_change.log";
$log_file_stat = "/netup/utm5/log/block_change_stat.log";
// Список наименований списков доступа
$ACL_array = array ('cisco3550-fa02','cisco3550-fa17','cisco3550-fa18','cisco3550-fa19','cisco3550-fa20','cisco3550-fa21','cisco3550-fa22',
'cisco3550-fa23','cisco3550-fa24','cisco3550-fa25','cisco3550-fa26','cisco3550-fa27','cisco3550-fa28');
// Служебные разрешения для каждого списка доступа
$ACE_array = array ("http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/any/host/10.0.0.1/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/10.0.0.9/eq/www/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/10.0.0.9/eq/4000/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/10.0.0.9/eq/5222/CR",
// "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/host/10.0.0.25/host/10.0.0.1/CR",
// "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/host/10.0.0.25/host/$CISCO_IP/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/icmp/any/host/10.0.0.9/echo-reply/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/icmp/any/host/10.0.0.25/echo-reply/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/icmp/any/host/10.0.0.51/echo-reply/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/icmp/any/host/10.0.0.124/echo-reply/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/udp/any/any/eq/bootpc/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/udp/any/any/eq/bootps/CR",
// "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/any/host/10.0.2.15/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/81.90.0.138/eq/6667/CR");
// Специфические уникальные разрешения
$ACE_array_spec = array("http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa23/-/permit/ip/host/10.0.0.188/any/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa23/-/permit/ip/host/10.0.0.10/any/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa19/-/permit/ip/host/10.0.3.252/any/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa18/-/permit/ip/any/host/10.0.2.15/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa17/-/permit/ip/any/host/10.0.2.15/CR",
"http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa23/-/exit");
if (!isset($_SERVER["argv"]["1"])) {
print "Отсутствуют аргументы\r\n";
exit;
}
$base_query = "Select INET_NTOA(ip_groups.ip & 4294967295) AS ip_norm, ip_groups.mac, accounts.is_blocked, ip_zones.name ";
$base_query = $base_query."From users Inner Join service_links ON users.id = service_links.user_id Inner Join accounts ON service_links.account_id = accounts.id ";
$base_query = $base_query."Inner Join iptraffic_service_links ON service_links.id = iptraffic_service_links.id Inner Join ip_groups ON iptraffic_service_links.ip_group_id = ip_groups.ip_group_id ";
$base_query = $base_query."Inner Join houses ON users.house_id = houses.id Inner Join ip_zones ON houses.ip_zone_id = ip_zones.id ";
$base_query = $base_query."WHERE users.is_deleted = '0' AND accounts.is_deleted = '0' AND ip_groups.is_deleted='0' AND iptraffic_service_links.is_deleted='0' AND service_links.is_deleted='0' ";
$file_handle = fopen($log_file,"a+");
if ($_SERVER["argv"]["1"]=='init') {
fwrite($file_handle, date("d.m.Y H:i:s").' Start cisco ACL init *********************************************************'."\r\n");
print "Start cisco ACL init *********************************************************\r\n";
foreach ($ACL_array as $ACL_Name) {
foreach ($ACE_array as $ACE_Name) {
$ACE_Name_tmp = str_replace('*ACL_NAME*',$ACL_Name,$ACE_Name);
// print $ACE_Name_tmp."\r\n";
fwrite($file_handle, date("d.m.Y H:i:s ").$ACE_Name_tmp."\r\n");
copy($ACE_Name_tmp,'/dev/null');
print ".";
}
$cisco_url_exit = "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACL_Name/-/exit";
// print $cisco_url_exit."\r\n";
fwrite($file_handle, date("d.m.Y H:i:s ").$cisco_url_exit."\r\n");
copy($cisco_url_exit,'/dev/null');
}
foreach ($ACE_array_spec as $ACE_spec_Name) {
$ACE_Name_tmp = $ACE_spec_Name;
print $ACE_Name_tmp."\r\n";
fwrite($file_handle, date("d.m.Y H:i:s ").$ACE_Name_tmp."\r\n");
copy($ACE_Name_tmp,'/dev/null');
print ".";
}
print "\r\nHeader cisco ACL init complete ************************************\r\n";
$db_connect=mysql_connect($db_host,$db_user,$db_password) or die ("Connect failed");
mysql_select_db($db_base,$db_connect);
$query = $base_query."ORDER BY ip_zones.name";
// print $query."\r\n";
$mysql_result=mysql_query($query);
$row_count = mysql_num_rows($mysql_result);
$on = 0;
$off = 0;
$all = 0;
$ACLNameOld = '***';
while ($row=mysql_fetch_array($mysql_result)) {
$all = $all + 1;
print ".";
$ACLName = $row['name'];
if ($ACLName=='cisco3550-service') continue;
if (strpos($row['ip_norm'],'172.18.')!==false) continue;
if ($row['is_blocked']!=0) {
$off = $off +1;
$cisco_url_conf = "http://".$CISCO_LOGIN.":".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/no/permit/ip/host/".$row['ip_norm']."/any/CR";
$cisco_url_exit = "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
} else {
$on = $on + 1;
$cisco_url_conf = "http://".$CISCO_LOGIN.":".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/permit/ip/host/".$row['ip_norm']."/any/CR";
$cisco_url_exit = "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
}
if (isset($_SERVER["argv"]["2"]) and ($_SERVER["argv"]["2"]=='clear')) {
$cisco_url_conf = "http://".$CISCO_LOGIN.":".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/no/permit/ip/host/".$row['ip_norm']."/any/CR";
$cisco_url_exit = "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
}
if ($ACLNameOld!=$ACLName and $ACLNameOld!='***') {
$cisco_url_exit = "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLNameOld/-/exit";
copy($cisco_url_exit,'/dev/null');
// print $cisco_url_exit."\r\n";
print "\r\ncisco ACL $ACLNameOld complete\r\n";
}
$ACLNameOld = $ACLName;
fwrite($file_handle, date("d.m.Y H:i:s ").$cisco_url_conf."\r\n");
copy($cisco_url_conf,'/dev/null');
// print $cisco_url_conf."\r\n";
}
print "\r\ncisco ACL $ACLNameOld complete\r\n";
copy($cisco_url_exit,'/dev/null');
// print $cisco_url_exit."\r\n";
fwrite($file_handle, date("d.m.Y H:i:s ").$cisco_url_exit."\r\n");
fwrite($file_handle, date("d.m.Y H:i:s").' Stop cisco ACL init *********************************************************'."\r\n");
print "\r\nStop cisco ACL init *********************************************************\r\n";
print "Всего: ".$all."\r\n";
print "Запрещено: ".$off."\r\n";
print "Разрешено: ".$on."\r\n";
$file_handle_stat = fopen($log_file_stat,"a+");
fwrite($file_handle_stat, date("d.m.Y H:i:s ")."Всего: ".$all."\r\n");
fwrite($file_handle_stat, date("d.m.Y H:i:s ")."Запрещено: ".$off."\r\n");
fwrite($file_handle_stat, date("d.m.Y H:i:s ")."Разрешено: ".$on."\r\n");
fclose($file_handle_stat);
} else {
$accounts_id = $_SERVER["argv"]["1"];
$db_connect=mysql_connect($db_host,$db_user,$db_password) or die ("Connect failed");
mysql_select_db($db_base,$db_connect);
$query = $base_query."AND accounts.id='$accounts_id'";
// print $query."\r\n";
$mysql_result=mysql_query($query);
$row_count = mysql_num_rows($mysql_result);
while ($row=mysql_fetch_array($mysql_result)) {
$ACLName = $row['name'];
if ($ACLName=='cisco3550-service') continue;
if (strpos($row['ip_norm'],'172.18.')!==false) continue;
if ($row['is_blocked']!=0) {
$cisco_url_conf = "http://".$CISCO_LOGIN.":".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/no/permit/ip/host/".$row['ip_norm']."/any/CR";
$cisco_url_exit = "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
} else {
$cisco_url_conf = "http://".$CISCO_LOGIN.":".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/permit/ip/host/".$row['ip_norm']."/any/CR";
$cisco_url_exit = "http://$CISCO_LOGIN:$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
}
fwrite($file_handle, date("d.m.Y H:i:s ").$cisco_url_conf."\r\n");
// print $cisco_url_conf."\r\n";
copy($cisco_url_conf,'/dev/null');
}
copy($cisco_url_exit,'/dev/null');
// print $cisco_url_exit."\r\n";
fwrite($file_handle, date("d.m.Y H:i:s ").$cisco_url_exit."\r\n");
}
fclose($file_handle);
?>
Тестовый примерMakariy писал(а):to dk: не поделишься скриптом? ато пока неполучается у меня expect скомпилить
Код: Выделить всё
#!/usr/bin/perl
$| = 1;
my $DEBUG = 0;
use Net::Telnet::Cisco;
my @list_disable = (
'192.168.0.1',
'192.168.0.2',
'192.168.0.3',
'192.168.0.4',
'192.168.0.5'
);
my @list_enable = (
'192.168.0.6',
'192.168.0.7',
'192.168.0.8',
'192.168.0.9',
'192.168.0.10'
);
my $session = Net::Telnet::Cisco->new(
Host => '1.1.1.1',
errmode => "return"
);
$session->login('login', 'password');
sub ciscoit(@) {
my @output = $session->cmd( join( "\n", @_ ));
'';
}
print "Disabling:\n" if $DEBUG;
for my $ip ( @list_disable ) {
ciscoit( "clear access-template 106 fw_in host $ip any",
"clear access-template 105 fw_out any host $ip" );
print "." if $DEBUG;
};
print "\n\nEnabling:\n" if $DEBUG;
for my $ip ( @list_enable ) {
ciscoit( "access-template 106 fw_in host $ip any",
"access-template 105 fw_out any host $ip" );
print "." if $DEBUG;
};
print "\n\nDone!\n\n" if $DEBUG;
Насколько я понимаю, проблема в трёхсекундной задержке между вызовами rsh, появившейся в циске с какого-то иос-а? Говорят что оно настраивается.Makariy писал(а):именно, у меня счас все движется к тому что, вместо циски поставть FreeBSD с mpd + NAT . Вчера собрал тестовый стенд закинул туда rfw от демо версии FreeBSD , судя по логам все правила залились за несколько секунд. Может быть разработчикам следует пересмотреть механизм remote cisco rfw ?