Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 9941 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ранее использовал сценарийдля отправки письма при смене внешнего IP роутера.
Код запускал из планировщика каждые полчаса. Если IP менялся, прилетало письмо.
Сейчас mail.ru работает только через SSL, либо TLS.
Сервер smtp в ответ ругается

Цитата:
Исключение при вызове "Send" с "4" аргументами: "Неправильная последовательность команд.
Отклик сервера: Administrative prohibition -- authorization required.  Users in  
your domain are not allowed to send email without authorization.

Что добавить\изменить в сценарий, чтобы письмо отсылалось?
Спасибо.

Всего записей: 9941 | Зарегистр. 12-10-2001 | Отправлено: 15:13 25-11-2019 | Исправлено: KLASS, 17:28 25-11-2019
newhk



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BorlandIMHO
Спасибо





п. 2.8.2. главы VIII Соглашения по использованию. Либо благодарим в ПМ, либо благодарим здесь, но дополняем свой пост полезной для других информацией по теме.

Всего записей: 334 | Зарегистр. 02-02-2009 | Отправлено: 15:15 25-11-2019 | Исправлено: KLASS, 15:21 25-11-2019
sniffspb



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите плз перевести в PowerShell.
@echo off
if not exist C:\test\1.txt goto 1
if not exist C:\test\2.txt goto 1
if not exist C:\test\3.txt goto 1
if not exist C:\test\4.txt goto 1
start C:\test\5.txt
exit
:1
start C:\test\6.txt
exit

Всего записей: 22 | Зарегистр. 09-05-2007 | Отправлено: 15:38 25-11-2019
ipmanyak



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS Попробуй просто порт сменить, вместо 25 поставить 465.  
А в целом про vbs скрипты ничего не скажу, не знаю, но есть консольная  утилита
mailsend v1.19, поддерживает ssl и starttls   - https://github.com/muquit/mailsend/
качать отсюда  - https://github.com/muquit/mailsend/releases/
примеры запуска - https://github.com/muquit/mailsend/blob/master/doc/examples.mediawiki
FAQ - https://github.com/muquit/mailsend/blob/master/doc/mailsend-FAQ.mediawiki
 


----------
В сортире лучше быть юзером, чем админом...

Всего записей: 10859 | Зарегистр. 10-12-2003 | Отправлено: 15:40 25-11-2019
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
Из личных, "закромов", wsh (vbs):

Код:
 
Set objEmail = WScript.CreateObject("CDO.Message")';  // создаем объект CDO.Message
' Зададим значения для полей письма.
objEmail.From = "adress-1@mail.ru"';                  // адрес отправителя (пользователя)
objEmail.To = "adress-2@mail.ru"';                    // адрес получателя
objEmail.BodyPart.CharSet = "utf-8"';                 // задаем кодовую страницу сообщения
objEmail.Subject = "Subj"';                           // тема письма
objEmail.Textbody = Message';                         // тело письма
' Зададим значения для полей конфигурации
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2'; //посылать сообщения по сети, используя SMTP
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.ru"'; //ip или DNS-имя smtp-сервера
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465'; // порт smtp-сервера
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True'; // использовать шифрование SSL
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1'; // используем basic authentication
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "adress-1@mail.ru"'; //имя пользователя
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"';  //пароль пользователя
objEmail.Configuration.Fields.Update
' Отправка письма
objEmail.Send
Set objEmail = Nothing

Всего записей: 808 | Зарегистр. 16-01-2013 | Отправлено: 15:53 25-11-2019
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24
порт, разумеется, менял, не помогло. Задумывается на пару минут и выдает

Цитата:
Исключение при вызове "Send" с "4" аргументами: "Время ожидания операции истекло."

Про сторонние решения в курсе, но по возможности стараюсь избегать, да и в теме мы сейчас по сценариям Выни, а не стороннего ПО )
vasyosuol_24
А как внешний IP роутера данный код узнает?

Всего записей: 9941 | Зарегистр. 12-10-2001 | Отправлено: 16:08 25-11-2019
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS

Цитата:
А как внешний IP роутера данный код узнает?

http://forum.ru-board.com/topic.cgi?forum=33&topic=11963&start=960#2
 
Добавлено:

Цитата:
Про сторонние решения в курсе, но по возможности стараюсь избегать, да и в теме мы сейчас по сценариям Выни, а не стороннего ПО )  

Не могу удержаться (болтун я ) - модера узнаёшь по полёту

Всего записей: 808 | Зарегистр. 16-01-2013 | Отправлено: 16:12 25-11-2019 | Исправлено: vasyosuol_24, 16:26 25-11-2019
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sniffspb
А JS нельзя?

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 16:28 25-11-2019 | Исправлено: VVL99, 18:05 25-11-2019
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24
Что-то там все сложно, выдает окно
 
теперь эту строку разбирать...
Есть же код на пошике, что выше дал. Осталось с SSL подружить.

Всего записей: 9941 | Зарегистр. 12-10-2001 | Отправлено: 16:31 25-11-2019
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS

Цитата:
теперь эту строку разбирать...

Чего её (строку) разбирать-то? Мне в явном виде (в теле письма) присылает ИП-адрес.

Цитата:
Есть же код на пошике, что выше дал.

Как по мне - так как раз на пошике мутнее. Дело вкуса. Я не программист, к сожалению. Чего есть - тем и пользуюсь. У меня всё работает; большего и не надо.

Всего записей: 808 | Зарегистр. 16-01-2013 | Отправлено: 16:58 25-11-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
# Порт не указываем
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer)
# Имя пользователя. Полное имя почтового ящика, включая логин, @ и домен
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("UserName@bk.ru", "Password")

Всего записей: 3096 | Зарегистр. 16-08-2012 | Отправлено: 17:09 25-11-2019
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24

Цитата:
Мне в явном виде (в теле письма) присылает ИП-адрес.  

Мне надо как выше, IP не в теле, но в Теме письма, с ним далее будет Voyager разбираться.

Цитата:
У меня всё работает; большего и не надо.

Полный код свой рабочий на VBS выложи, чтобы можно было в планировщик сунуть и получить
хотя бы в теле письма IP, а там уже поправлю. А то, что ты тут выложил выдает

 
Добавлено:
iNNOKENTIY21
Не взлетает, ответ

Цитата:
Исключение при вызове "Send" с "4" аргументами: "Неправильная последовательность команд. От
клик сервера: Administrative prohibition -- authorization required.  Users in your domain a
re not allowed to send email without authorization.

 
Добавлено:
Да, имя полностью указывал
UserName@bk.ru

Всего записей: 9941 | Зарегистр. 12-10-2001 | Отправлено: 17:13 25-11-2019
sniffspb



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VVL99
Спасибо за JS, возможно там препутаны местами 5.txt и 6.txt.
Предпочтительнее конечно PowerShell.

Всего записей: 22 | Зарегистр. 09-05-2007 | Отправлено: 17:23 25-11-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
Цитата:
Не взлетает

Странно это, я проверял на bk.ru именно.
Код:
$EmailFrom = "USER@bk.ru"
$EmailTo = "USER@yandex.ru"
$Subject = "TEST 6"
$Body = "ТЕСТ 6"
$SMTPServer = "smtp.mail.ru"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer)
$SMTPClient.EnableSsl = $True
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("User@bk.ru", "PASSWORD")
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

письмо уходит, молча.

Всего записей: 3096 | Зарегистр. 16-08-2012 | Отправлено: 17:31 25-11-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS

Цитата:
Что добавить\изменить в сценарий, чтобы письмо отсылалось?

Если проблема только в почтовом сервере, то пишем функцию:

Код:
function mail-send {
    param(
        $subj = 'ALERT',
        $ip = '1.2.3.4',
        $login='from@mail.ru',
        $password = 'password'
    )
    $pass = convertto-securestring $password -aspl -force
    $cred = new-object system.management.automation.pscredential ($login, $pass)
    $from = 'from@mail.ru'
    $to = 'to@mail.ru'
    $server = 'smtp.mail.ru'
    $port = 25
    $body = 'IP изменился на: '+$ip
    send-mailmessage -fr $from -to $to -smtps $server -port $port -subj $subj -body $body -cred $cred -usessl -enc UTF8
}

 
далее применяем функцию в коде, там где требуется отправка почты:

Код:
mail-send 'SABJECT' 'IP' 'LOGIN' 'PASSWORD'

- все параметры не обязательны, т.к. в параметрах функции прописаны их значения...

Всего записей: 3208 | Зарегистр. 03-02-2009 | Отправлено: 17:39 25-11-2019
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sniffspb
Исправил, если одного из файлов нет, то запускаем 6.
PS пока не знаю.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 18:01 25-11-2019
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS

Цитата:
Полный код свой рабочий на VBS выложи, чтобы можно было в планировщик сунуть и получить хотя бы в теле письма IP, а там уже поправлю.

Подробнее...

Всего записей: 808 | Зарегистр. 16-01-2013 | Отправлено: 18:11 25-11-2019
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sniffspb
Цитата:
Помогите плз перевести в PowerShell.

Задачку не понял…
VVL99
Цитата:
js

на powershell
Код:
$Dir = "B:\test\"
$I = 1
$N = 5
 
for (; $I -lt $N; $I++) {
    $Dir + $I + ".txt"
    if (![IO.File]::Exists($Dir + $I + ".txt")) {
        break
    }
}
 
Start-Process ($Dir + ($I -lt $N ? "6" : $I) + ".txt")


Всего записей: 3096 | Зарегистр. 16-08-2012 | Отправлено: 18:24 25-11-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sniffspb

Цитата:
Помогите плз перевести в PowerShell.  
@echo off  
if not exist C:\test\1.txt goto 1  
if not exist C:\test\2.txt goto 1  
if not exist C:\test\3.txt goto 1  
if not exist C:\test\4.txt goto 1  
start C:\test\5.txt  
exit  
:1  
start C:\test\6.txt  
exit

Перевести что?
Задачу лучше опишите, а там может и подсказка найдется.
Если же надо именно "в лоб", то:

Код:
1..4|%{$flag=$false}{if (!(test-path "c:\test\$_.txt")){$flag=$true}}
if($flag){C:\test\6.txt}else{C:\test\5.txt}

Если же совсем копию действий надо:

Код:
1..4|%{if (!(test-path "c:\test\$_.txt")){C:\test\6.txt;break}}
C:\test\5.txt

Всего записей: 3208 | Зарегистр. 03-02-2009 | Отправлено: 18:27 25-11-2019 | Исправлено: YuS_2, 18:45 25-11-2019
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2
Не понял, как в $subj отправить новый IP, который был получен в коде

Цитата:
$ext_ip="D:\ext_ip.txt"
$def_ip="0.0.0.0"
$FileExists = Test-Path $ext_ip
If ($FileExists -eq $False) {$def_ip | Out-File $ext_ip}
 
($Rout = ping -r 1 -n 1 www.yandex.ru) | Out-Null
$new_ip = ($Rout | Select-String '(\D+:\s)(\S+)').Matches.Groups.Value[2]
$old_ip=Get-Content -Path $ext_ip -TotalCount 1
 
If (-not ($new_ip -eq $old_ip))

Потом, когда выполняется команда mail-send вылазит окно авторизации.
vasyosuol_24
Письмо уходит, но в теле письма пусто.

Всего записей: 9941 | Зарегистр. 12-10-2001 | Отправлено: 19:25 25-11-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru