Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   отправка письма (http://forum.oszone.net/showthread.php?t=68143)

Tvik 05-07-2006 15:23 458099

отправка письма
 
Ситуация следующая:
мне надо с помощью vbs скрипта, или батника - чего-то самого простого, не нагружающего систему, определить размер свободного места на диске и если он меньше определенного, отправить сообщение net sendом, а лучше письмом по адресу user@pochta.org (аккаунт почтового пользователя - Domen\User, пароль - password, сервер smtp: Pochtovik).
В программировании я совсем плоха, подскажите, пожалуйста, используя мои данные, как это можно реализовать.
добрый муж написал начало:
Dim drvpath, fs, d, s, MinMB
drvpath = "C:"
MinMB = 10000
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(drvPath))
s = "Свободное место на диске " & UCase(drvPath) & " "& FormatNumber(d.FreeSpace/1024/ 1024, 0) & " Mb"
if (d.FreeSpace/1024/1024 < MinMB) then MsgBox s

сообщение честно выскакивает на локальной машине. А мне надо получить такое сообщение на удаленную машину.
посмотрела примеры про отправку логов, не разобралась.

hasherfrog 06-07-2006 10:48 458398

Добавьте ещё 3 строки
Код:

admin_host = "имявашей машины"
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec("net send " & admin_host & " " & s)

Не забудьте запустить у себя "Службу сообщений".
Это вариант с net send.

Вариант с почтой... Ни разу не пробовал, да и попробовать-то не получится толком, извините.

hasherfrog 06-07-2006 11:01 458407

Может тут помогут http://forum.oszone.net/thread-68165.html

Tvik 06-07-2006 14:09 458503

Спасибо огромное!
можно еще глупый вопрос: как передать сообщение s в текстовый файл в этом скрипте?

ps: тогда смогу письмо отправлять. Может,это будет немного дикий и не очень изящный способ, но главное, что будет :)

hasherfrog 06-07-2006 15:05 458525

Что-то типа такого

Код:

Dim drvpath, fs, d, s, MinMB
drvpath = "C:"
MinMB = 10000
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(drvPath))
s = "Свободное место на диске " & UCase(drvPath) & " "& FormatNumber(d.FreeSpace/1024/ 1024, 0) & " Mb"
if (d.FreeSpace/1024/1024 < MinMB) then
 file2send = "some.txt"
 Set objNewFile = fs.CreateTextFile(file2send)
 objNewFile.WriteLine s
 objNewFile.Close
 *а тут как-то надо отправить file2send по почте*
end if


Tvik 07-07-2006 09:09 458773

Спасибо! все получилось.
на самом деле, говоря про дикий способ, не шутила.
Работает это так - в шедулере сначала запускается скрипт, который, если места мало, создает файл Alert.txt, через минуту запускается батник, который проверяет, есть ли файл Alert и, если есть, отправляет его по почте с помощью программки sendfile. Вот так "незатейливо" :)
машину не грузит совсем ничем, дополнительных служб запускать не надо.
если узнаю, как прямо из скрипта организовать отправку письма - обязательно напишу.

hasherfrog 07-07-2006 10:21 458793

>> Вот так "незатейливо"
А затейливо как раз плохо :]

Думаю, очень полезная вещь получится. Во всяком случае, я уже подумываю оснастить своих пользователей таким логон-скриптом. А то придёшь, сядешь за чужую машину, а там - бац - недостаточно места, бла-бла-бла. Сидишь и думаешь: "Али я плохой администратор, что мне никто не говорил про эту проблему? Может, страшный? Или слыву ленивым? Ведь работать-то невозможно с такими приколами, а они как-то работают и не жалуются..." :]

А отправка письма сильно зависит от установленного (или дефолтного) почтовика, так что тут всё специфично в каждом случае.
Net send же универсален, но требует включения некоторых служб.

Vadikan 07-07-2006 10:41 458801

Цитата:

"Али я плохой администратор, что мне никто не говорил про эту проблему? Может, страшный?
Не, не страшный, а добрый. Страшный бы просто запретил пользователям сохранять файлы за пределами профиля, на профиль квоты поставил :)


Время: 06:28.

Время: 06:28.
© OSzone.net 2001-