Cisco и UTM5

Технические вопросы по UTM 5.0
Ответить
Crow
Сообщения: 96
Зарегистрирован: Ср авг 09, 2006 18:23

Cisco и UTM5

Сообщение Crow »

Доброго времени суток!

Решили использовать циску совместно с биллингом.
Все связки настроил, все вроде работает.

Но не очень нравится способ управления через dynamic acl.
Хочется статику, и чтобы сразу с сохранением:),
чтоб по rsh можно было ей скормить, например:

Код: Выделить всё

conf t
access-list ...
end
write
разом...

Как ни пробовал такое, так и не получилось.
Скажите это вообще как-нибудь возможно сделать через rsh, или это в принципе невозможно?

За ранее спасибо!

P.S.
UTM 5.2.1-007

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Re: Cisco и UTM5

Сообщение Chrst »

Crow писал(а):Но не очень нравится способ управления через dynamic acl.
Хочется статику, и чтобы сразу с сохранением:),
А чем не устраивает dynamic?

Передавать по rsh полный статический ACL при блокировке одного абонента довольно не рационально, да еще и долго это может быть.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Добавлю, что после ввода первой строки ACL у всех остальных абонентов пропадёт связь до добавления их IP, так что такой способ вообще не подходит.

А вообще можно легко сделать через Net::Telnet::Cisco.

Crow
Сообщения: 96
Зарегистрирован: Ср авг 09, 2006 18:23

Сообщение Crow »

Получается, что при использовании dacl тип фаервола будет local, а не cisco, и дополнительными командами мне придется дублировать правила в текстовый файл, чтобы при случайной или намеренной перезагрузке роутера, подгрузить через tftp конфиг-файл?

При использовании DAcl при перезагрузке правила по юзеру пропадают, приходиться для каждого пользователя делать выкл/вкл...

P.S. Вообще мои знания по dynamic acl слабые. Не подскажете хорошую ссылку по теме? Cisco.com не предлагать:)

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

Crow писал(а):Cisco.com не предлагать:)
тогда читай cisco.net :lol: :lol: :lol: :lol: :lol:

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

Crow писал(а):Получается, что при использовании dacl тип фаервола будет local, а не cisco, и дополнительными командами мне придется дублировать правила в текстовый файл, чтобы при случайной или намеренной перезагрузке роутера, подгрузить через tftp конфиг-файл?
При использовании Dynamic ACL на cisco тип фаервола будет cisco. Если ничего экстра не ординарного не требуется, то перегонять правила через текстовый файл не потребуется, правило напрямую будет уходить на NAS.
При использовании DAcl при перезагрузке правила по юзеру пропадают, приходиться для каждого пользователя делать выкл/вкл...
Это вполне закономерно, так как билинг не занет о том, что удаленный фаервол ребутнули. В свою очередь, вполне естественно, дианамик лист будет чист. Можно конечно каждого пользователя "клацать", но можно просто перезапустить utm5_rfw. После перезапуска, rfw автоматически отправит все правила включения/выключения на фаервол, ACL заполнится актуальными правилами.

Crow
Сообщения: 96
Зарегистрирован: Ср авг 09, 2006 18:23

Сообщение Crow »

Более менее понятно...

Никак не могу найти материал по правильному построению динамических списков, все мои знания исключительно из примеров.

Не подскажете хороший ресурс с обзорными статьями по теме...

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

Crow писал(а):Более менее понятно...

Никак не могу найти материал по правильному построению динамических списков, все мои знания исключительно из примеров.

Не подскажете хороший ресурс с обзорными статьями по теме...
Очень хороший ресурс google.ru :D

Crow
Сообщения: 96
Зарегистрирован: Ср авг 09, 2006 18:23

Сообщение Crow »

Chrst писал(а):
Crow писал(а):Более менее понятно...

Никак не могу найти материал по правильному построению динамических списков, все мои знания исключительно из примеров.

Не подскажете хороший ресурс с обзорными статьями по теме...
Очень хороший ресурс google.ru :D
Спасибо, как раз то, что надо!!! :D :D :D

Crow
Сообщения: 96
Зарегистрирован: Ср авг 09, 2006 18:23

Сообщение Crow »

Разобрался вроде со всем.
Но возник еще один вопрос:
Есть учетные записи, в которых в сервисных связках несколько ip-адресов. Причем у пользователя могут быть как внешние, так и частные ip-адреса одновременно.
Получается что внешние адреса буду также NATится, как и частные.
Как сделать, чтобы транслировались только частные адреса?

Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

Crow писал(а):Но возник еще один вопрос:
Есть учетные записи, в которых в сервисных связках несколько ip-адресов. Причем у пользователя могут быть как внешние, так и частные ip-адреса одновременно.
А какая между ними разница с точки зрения математики?
Crow писал(а):Получается что внешние адреса буду также NATится, как и частные.
Как сделать, чтобы транслировались только частные адреса?
Здесь уже все зависит от настройки маршрутизатора. Это не функция билинга. На роутере сетки надо поделить кого просто маршрутизировать, а кого натить.

Crow
Сообщения: 96
Зарегистрирован: Ср авг 09, 2006 18:23

Сообщение Crow »

Chrst писал(а):А какая между ними разница с точки зрения математики?
Как сделать, чтобы транслировались только частные адреса?
Понятно, что никакой... Все дело только в NAT.
Здесь уже все зависит от настройки маршрутизатора. Это не функция билинга. На роутере сетки надо поделить кого просто маршрутизировать, а кого натить.
Собственно, как настроить и спрашиваю...
Получается и внешние и частные адреса находятся а одном access-liste. Насколько мне известно, команда ip nat привязывается к access-listу, получается, что под него попадают и внешние и частные адреса. Можно ли как-нибудь внешние из процесса транслирования исключить?

gravis
Сообщения: 562
Зарегистрирован: Ср мар 16, 2005 15:31
Откуда: Село Красноярск

Сообщение gravis »

Crow писал(а):Собственно, как настроить и спрашиваю...
Получается и внешние и частные адреса находятся а одном access-liste. Насколько мне известно, команда ip nat привязывается к access-listу, получается, что под него попадают и внешние и частные адреса. Можно ли как-нибудь внешние из процесса транслирования исключить?
Используй разные ACL для NAT и для разрешения доступа. В ACL для ната укажи просто весь (или все, если их несколько) диапазон серых адресов, которые нужно натить. Его UTM трогать не должна! А ACL для пропуска трафика нужно уже делать динамическим.

Crow
Сообщения: 96
Зарегистрирован: Ср авг 09, 2006 18:23

Сообщение Crow »

gravis писал(а):
Crow писал(а):Собственно, как настроить и спрашиваю...
Получается и внешние и частные адреса находятся а одном access-liste. Насколько мне известно, команда ip nat привязывается к access-listу, получается, что под него попадают и внешние и частные адреса. Можно ли как-нибудь внешние из процесса транслирования исключить?
Используй разные ACL для NAT и для разрешения доступа. В ACL для ната укажи просто весь (или все, если их несколько) диапазон серых адресов, которые нужно натить. Его UTM трогать не должна! А ACL для пропуска трафика нужно уже делать динамическим.
Спасибо!!! Как-то я не додумался до этого :oops: :oops: :oops:

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

Вот мой скрипт, может пригодится.
С параметром init грузит все списки с нуля. При запуске в биллинге через правила файрвала (Изменение типа блокировки) "php /netup/utm5/bin/block_change.php ACCOUNT_ID" загружает статику для адресов пользователя.
Изначально перебрал все возможные варианты загрузки, но остановился на http - не нужны доп. либы, любая платформа, минимум настроек на циске. Да и еще быстрее по какой то причине в два раза любого другого способа (за исключением конечно tftp, но он имеет боьше минусов чем плюсов в этой ситуации).

Код: Выделить всё

<?php
	@ini_set&#40;"display_errors", "1"&#41;;
	error_reporting&#40;E_ALL&#41;;

	$db_host='127.0.0.1&#58;3306';
	$db_base='UTM5';
	$db_user='********';
	$db_password='**********';

	$CISCO_IP = '10.0.0.100';
	$CISCO_LOGIN = '**************';
	$CISCO_PASSW = '*******************';	

	$log_file = "/netup/utm5/log/block_change.log";
	$log_file_stat = "/netup/utm5/log/block_change_stat.log";
	// Список наименований списков доступа. В биллинге Настройки-Список IP-зон тоже самое, зоны называются cisco3550-fa02,cisco3550-fa17,cisco3550-fa18 и т.п.
	$ACL_array = array &#40;'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','cisco3550-fa33','cisco3550-fa34'&#41;;
	// Служебные разрешения для каждого списка доступа
	$ACE_array = array &#40;"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/any/host/10.0.0.1/CR",			// Для Личного кабинета
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/10.0.0.9/eq/www/CR",				// Основной сайт
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/195.22.104.13/eq/443/CR",		// Для Личного кабинета
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/any/host/10.0.0.105/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/10.0.0.9/eq/4000/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/10.0.0.9/eq/5222/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/10.0.0.9/eq/6667/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/icmp/any/host/10.0.0.9/echo-reply/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/icmp/any/host/10.0.0.25/echo-reply/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/icmp/any/host/10.0.0.51/echo-reply/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/host/10.0.0.7/any/CR", // Netbook
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/ip/host/10.0.0.8/any/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/udp/any/any/eq/bootpc/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/udp/any/any/eq/bootps/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/deny/41/any/any/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/deny/58/any/any/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/no/deny/48/any/any/CR",
						"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/*ACL_NAME*/-/permit/tcp/any/host/81.90.0.138/eq/6667/CR"&#41;;
	// Специфические уникальные разрешения
	$ACE_array_spec = array&#40;"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa23/-/permit/ip/host/10.0.0.188/any/CR",
				"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa23/-/permit/ip/host/10.0.0.10/any/CR",
				"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa23/-/permit/ip/host/10.0.3.252/any/CR", //*************
				"http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/cisco3550-fa23/-/exit"&#41;;

	if &#40;!isset&#40;$_SERVER&#91;"argv"&#93;&#91;"1"&#93;&#41;&#41; &#123;
		print "Отсутствуют аргументы\r\n";		
		exit;
	&#125;
	$base_query = "Select INET_NTOA&#40;ip_groups.ip & 4294967295&#41; 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&#40;$log_file,"a+"&#41;;

	if &#40;$_SERVER&#91;"argv"&#93;&#91;"1"&#93;=='init'&#41; &#123;

		fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s"&#41;.' Start cisco ACL init *********************************************************'."\r\n"&#41;;
		print "Start cisco ACL init *********************************************************\r\n";
		foreach &#40;$ACL_array as $ACL_Name&#41; &#123;
			foreach &#40;$ACE_array as $ACE_Name&#41; &#123;
				$ACE_Name_tmp = str_replace&#40;'*ACL_NAME*',$ACL_Name,$ACE_Name&#41;;
				fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s "&#41;.$ACE_Name_tmp."\r\n"&#41;;			
				copy&#40;$ACE_Name_tmp,'/dev/null'&#41;;
				print ".";
			&#125;
			$cisco_url_exit = "http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACL_Name/-/exit";
			fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s "&#41;.$cisco_url_exit."\r\n"&#41;;			
			copy&#40;$cisco_url_exit,'/dev/null'&#41;;
		&#125;
		foreach &#40;$ACE_array_spec as $ACE_spec_Name&#41; &#123;
			$ACE_Name_tmp = $ACE_spec_Name;
			fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s "&#41;.$ACE_Name_tmp."\r\n"&#41;;			
			copy&#40;$ACE_Name_tmp,'/dev/null'&#41;;
			print ".";
		&#125;

		print "\r\nHeader cisco ACL init complete ************************************\r\n";

		$db_connect=mysql_connect&#40;$db_host,$db_user,$db_password&#41; or die &#40;"Connect failed"&#41;;
		mysql_select_db&#40;$db_base,$db_connect&#41;;
		$query = $base_query."ORDER BY ip_zones.name";
		$mysql_result=mysql_query&#40;$query&#41;;
		$row_count = mysql_num_rows&#40;$mysql_result&#41;;
		$on = 0;
		$off = 0;
		$all = 0;
		$ACLNameOld = '***';
		while &#40;$row=mysql_fetch_array&#40;$mysql_result&#41;&#41; &#123;
			$all = $all + 1;
			print ".";
			$ACLName = $row&#91;'name'&#93;;
			if &#40;$ACLName=='cisco3550-service'&#41; continue;
			if &#40;strpos&#40;$row&#91;'ip_norm'&#93;,'172.18.'&#41;!==false&#41; continue;
			if &#40;$row&#91;'is_blocked'&#93;!=0&#41; &#123;
				$off = $off +1;
				$cisco_url_conf = "http&#58;//".$CISCO_LOGIN."&#58;".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/no/permit/ip/host/".$row&#91;'ip_norm'&#93;."/any/CR";
				$cisco_url_exit = "http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
			&#125; else &#123;
				$on = $on + 1;
				$cisco_url_conf = "http&#58;//".$CISCO_LOGIN."&#58;".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/permit/ip/host/".$row&#91;'ip_norm'&#93;."/any/CR";
				$cisco_url_exit = "http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
			&#125;
			if &#40;isset&#40;$_SERVER&#91;"argv"&#93;&#91;"2"&#93;&#41; and &#40;$_SERVER&#91;"argv"&#93;&#91;"2"&#93;=='clear'&#41;&#41; &#123;
				$cisco_url_conf = "http&#58;//".$CISCO_LOGIN."&#58;".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/no/permit/ip/host/".$row&#91;'ip_norm'&#93;."/any/CR";
				$cisco_url_exit = "http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
			&#125;
			if &#40;$ACLNameOld!=$ACLName and $ACLNameOld!='***'&#41; &#123;
				$cisco_url_exit = "http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLNameOld/-/exit";
				copy&#40;$cisco_url_exit,'/dev/null'&#41;;
				print "\r\ncisco ACL $ACLNameOld complete\r\n";
			&#125;
			$ACLNameOld = $ACLName;
			fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s "&#41;.$cisco_url_conf."\r\n"&#41;;			
			copy&#40;$cisco_url_conf,'/dev/null'&#41;;
		&#125;
		print "\r\ncisco ACL $ACLNameOld complete\r\n";
		copy&#40;$cisco_url_exit,'/dev/null'&#41;;
		fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s "&#41;.$cisco_url_exit."\r\n"&#41;;			
		fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s"&#41;.' Stop cisco ACL init *********************************************************'."\r\n"&#41;;
		print "\r\nStop cisco ACL init *********************************************************\r\n";
		print "Всего&#58; ".$all."\r\n";
		print "Запрещено&#58; ".$off."\r\n";
		print "Разрешено&#58; ".$on."\r\n";
		$file_handle_stat = fopen&#40;$log_file_stat,"a+"&#41;;
		fwrite&#40;$file_handle_stat, date&#40;"d.m.Y H&#58;i&#58;s "&#41;."Всего&#58; ".$all."\r\n"&#41;;			
		fwrite&#40;$file_handle_stat, date&#40;"d.m.Y H&#58;i&#58;s "&#41;."Запрещено&#58; ".$off."\r\n"&#41;;			
		fwrite&#40;$file_handle_stat, date&#40;"d.m.Y H&#58;i&#58;s "&#41;."Разрешено&#58; ".$on."\r\n"&#41;;			
		fclose&#40;$file_handle_stat&#41;;
	&#125; else &#123;
		$accounts_id = $_SERVER&#91;"argv"&#93;&#91;"1"&#93;;
		              
		$db_connect=mysql_connect&#40;$db_host,$db_user,$db_password&#41; or die &#40;"Connect failed"&#41;;
		mysql_select_db&#40;$db_base,$db_connect&#41;;
		$query = $base_query."AND accounts.id='$accounts_id'";
		$mysql_result=mysql_query&#40;$query&#41;;
		$row_count = mysql_num_rows&#40;$mysql_result&#41;;
		while &#40;$row=mysql_fetch_array&#40;$mysql_result&#41;&#41; &#123;
			$ACLName = $row&#91;'name'&#93;;
			if &#40;$ACLName=='cisco3550-service'&#41; continue;
			if &#40;strpos&#40;$row&#91;'ip_norm'&#93;,'172.18.'&#41;!==false&#41; continue;
			if &#40;$row&#91;'is_blocked'&#93;!=0&#41; &#123;
				$cisco_url_conf = "http&#58;//".$CISCO_LOGIN."&#58;".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/no/permit/ip/host/".$row&#91;'ip_norm'&#93;."/any/CR";
				$cisco_url_exit = "http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
			&#125; else &#123;
				$cisco_url_conf = "http&#58;//".$CISCO_LOGIN."&#58;".$CISCO_PASSW."@".$CISCO_IP."/level/15/ipenacl/$ACLName/-/permit/ip/host/".$row&#91;'ip_norm'&#93;."/any/CR";
				$cisco_url_exit = "http&#58;//$CISCO_LOGIN&#58;$CISCO_PASSW@$CISCO_IP/level/15/ipenacl/$ACLName/-/exit";
			&#125;
			fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s "&#41;.$cisco_url_conf."\r\n"&#41;;			
			copy&#40;$cisco_url_conf,'/dev/null'&#41;;

		&#125;
		copy&#40;$cisco_url_exit,'/dev/null'&#41;;
		fwrite&#40;$file_handle, date&#40;"d.m.Y H&#58;i&#58;s "&#41;.$cisco_url_exit."\r\n"&#41;;			
	&#125;
	fclose&#40;$file_handle&#41;;
?>

Ответить