Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Разное - [решено] Возможности команды net send

Ответить
Настройки темы
Разное - [решено] Возможности команды net send

Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


День добрый
при выполнении команды net send на определенный ВЫКЛЮЧЕННЫЙ компьютер команда пытается около 3х минут отправить сообщение и только потом вываливается в ошибку.

возможно ли сократить это время? допустим 2 секунды и сразу сброс попытки.

Отправлено: 17:41, 08-09-2008

 


Moderator


Сообщения: 53175
Благодарности: 15430

Профиль | Отправить PM | Цитировать


Whiteee, например, можно проверять доступность с помощью Ping (если ICMP разрешен):
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Ping -n 1 -w 1 %1 >nul
If "%ErrorLevel%"=="0" (
  Net Send %*
) Else (
  Echo При проверке связи не удалось обнаружить узел %1.
)
Сохранить в .cmd файл и вызывать его с параметрами имя сообщение.

Отправлено: 18:01, 08-09-2008 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


ошибка возникает также при отправке на включенный компьютер с остановленной службой сообщений

Отправлено: 11:01, 09-09-2008 | #3


Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


собственно я и использую стороннюю, send.exe приблуда (использует службу сообщений), работает из командной строки что крайне удобно


в батнике, в котором используется send.exe, указаны 80 компов получателей, вот если один из них выключен - задержка в выполнении несколько минут, если выключенно несколько - уже много минут.

выглядит так:

SET /P text=Please, input message text:
"\\srv-file\public\it\sent.exe" visior-1,hina1,hev1,era1,hin1,kov1 "%text%"

тут 6 получателей.

можно как либо тут сократить время при отключенном компе? службы сообщений на ВСЕХ компах включены

Отправлено: 11:14, 09-09-2008 | #4



Moderator


Сообщения: 53175
Благодарности: 15430

Профиль | Отправить PM | Цитировать


Whiteee, как-то так:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

SET /P text=Please, input message text:
For %%I In (visior-1,hina1,hev1,era1,hin1,kov1) Do (
  Ping -n 1 -w 1 %%I >nul
  If "!ErrorLevel!"=="0" (
    "\\srv-file\public\it\sent.exe" %%I "%text%"
  ) Else (
    Echo При проверке связи не удалось обнаружить узел %%I.
  )
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:03, 09-09-2008 | #5


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


При наличии в сети WINS-сервера список активных клиентов службы сообщений удобно получать через "NETSH WINS"... фишка в том, что при запуске компа и при регистрации пользователя служба сообщений регистрирует на WINS-сервере запись с кодом [03], а при выключении (штатном) освобождает эту запись... Т.е. список активных записей в норме соответствует списку компов/пользователей, готовых к получению сообщений. Из этого даже можно извлечь выгоду - не рассылать сообщения на машины без залогиненных пользователей.

Один минус - WINS не отличает компьютер от пользователя, поэтому сообщения могут уйти дважды... но обычно в организациях система именования пользователей и станций отличается, поэтому их можно фильтровать регулярным выражением (через FINDSTR) или применять другие методы (например, сверять со списком машин/пользователей). Для надежности и учета незапланированных отключений света можно совмещать с пингом, который привел выше Petya V4sechkin. Пример команды "NETSH WINS":
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion

Set $WINS=MyServer

For /F "Tokens=1 Delims=[ " %%i In ('Netsh WINS Server \\%$WINS% Show Database Servers^={} RecType^=2 EndChar^=3^|FindStr /IBRC:"................\[03h\]-D-A"') Do (
	Set MSGCLIENT=%%i
	@Echo !MSGCLIENT!
)

Отправлено: 06:23, 10-09-2008 | #6


Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


Petya V4sechkin, спасибо большое за верно указанный путь, но тут проблемка, в вашем скрипте программа sent.exe не будет выполнена если хоть один из узлов недоступен. Или я не прав? а надо что бы команда выполнялась на все узлы, за исключением недоступных.

amel27, а вот про это я даже не подумал, да и с WINS никогда не сталкивался...
как итог на 2003 win рядом с службой DNS я поднимаю службу WINS и запуская этот скрипт (указав свой сервер на месте MyServer) в переменную %%i я получаю список клиентов поддерживаюзих Службу сообщений? опять не совсем то... служба включена у всех, а получателях send.exe должны только определнные компьютеры...

Отправлено: 09:10, 10-09-2008 | #7



Moderator


Сообщения: 53175
Благодарности: 15430

Профиль | Отправить PM | Цитировать


Цитата Whiteee:
что бы команда выполнялась на все узлы, за исключением недоступных.
Ну да.

Отправлено: 09:20, 10-09-2008 | #8


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Whiteee:
служба включена у всех, а получателях send.exe должны только определнные компьютеры »
сверить с готовым списком как раз не проблема... к примеру, список лежит в TXT-файле с именем как у скрипта... тогда вариант (через "NET SEND"), совмещенный с PING может быть таким:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

Set $WINS=MyServer
Set $FILE=%~dpn0.txt

Set /P $TEXT=Please, input message text:

For /F "Tokens=1,5 Delims=[ " %%i In ('Netsh WINS Server \\%$WINS% Show Database Servers^={} RecType^=2 EndChar^=3^|Find /I "[03h]-D-A"') Do (
	FindStr /I/B/E/C:"%%i" "%$FILE%" 1>nul 2>&1
	If "!ERRORLEVEL!"=="0" (
		Ping -n 1 -w 1 %%j >nul
		If "!ERRORLEVEL!"=="0" Net Send %%i "%$TEXT%"
	)
)
- в списке могут быть как имена компьютеров, так и имена пользователей
- пользователь-отправитель должен входить в группу "пользователи WINS" сервера
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:09, 10-09-2008 | #9


Новый участник


Сообщения: 20
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Petya V4sechkin:
Whiteee, как-то так:
Код:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
SET /P text=Please, input message text:
For %%I In (visior-1,hina1,hev1,era1,hin1,kov1) Do (
Ping -n 1 -w 1 %%I >nul
If "!ErrorLevel!"=="0" (
"\\srv-file\public\it\sent.exe" %%I "%text%"
) Else (
Echo При проверке связи не удалось обнаружить узел %%I.
)
) »

а возможно сделать так, что бы ping сначала проверял весь список получателей, потом сключал недоступных и доступных единой толпой передавал в приложение send (она умеет обрабатывать получателей через запятую без пробела)

просто при существующем раскладе приложение send запускается каждый раз заново, а ее запуск это около 10ти секунд %(

Отправлено: 18:18, 10-09-2008 | #10



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Разное - [решено] Возможности команды net send

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Net send или Mail Send SH Admin Microsoft Windows NT/2000/2003 3 01-02-2010 21:02
Проблема с использованием команды net send sergeev_v Microsoft Windows NT/2000/2003 4 30-10-2008 21:39
[решено] Net Send alexandri Microsoft Windows NT/2000/2003 3 10-07-2007 14:14
[решено] вопрос по Net Send Pomaranch Microsoft Windows NT/2000/2003 4 11-12-2006 00:41
[решено] Отключение команды Net Send в одноранговой сети Windows 2000 YDen Microsoft Windows NT/2000/2003 1 30-09-2005 23:19




 
Переход