Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/30: Рейтинг темы: голосов - 30, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 07.01.2018
Сообщений: 39

Скрин экрана и отправка по FTP

18.01.2021, 21:54. Показов 6493. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Описание: На компьютерах организации установлена программа mipko для скринов камеры(каждые 5 секунд) и экрана(каждые 3 секунды) с последующей отправкой на удаленный FTP. Файлы приходят на FTP в zip формате, где дальше распаковываются и сортируются по №компьютера/дата/время.
Задача: возможно ли средствами Windows 10 делать скрин и отправку без сторонних программ вроде мипко?
Процесс должен быть скрытым и минимально нагружающим систему)

Заранее спасибо за уделенное внимание!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.01.2021, 21:54
Ответы с готовыми решениями:

Скрин и отправка по FTP
Здравствуйте! Описание: На компьютерах организации установлена программа mipko для скринов камеры(каждые 5 секунд) и экрана(каждые 3...

Как сделать скриншот экрана (просто скрин полного экрана) и сохранить изображение в определённую папку?
Как сделать скриншот экрана (просто скрин полного экрана) и сохранить изображение в определённую папку? Программа без кнопок просто...

Скрин экрана на Си + WinAPI
Есть у кого-нибудь код скрина экрана с комментариями? Буду очень благодарен!

33
1 / 1 / 0
Регистрация: 07.01.2018
Сообщений: 39
25.01.2021, 13:01  [ТС]
Студворк — интернет-сервис помощи студентам
alhaos,
Я вас понял. А так хорошо все начиналось))
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
27.01.2021, 16:10
Баркер, попробуйте отправку другим способом:
PowerShell
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
Param(
    $ftpPath   = 'ftp://ftp.domain.ru/screenshots',
    $ftpLogin  = "anonymous",
    $ftpPass   = "",
    $shotDelay = 3
)cls
 
[void] [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$scr = [Windows.Forms.Screen]::PrimaryScreen.Bounds
$pic = [Drawing.Bitmap]::new($scr.Width, $scr.Height)
$gfx = [Drawing.Graphics]::FromImage($pic)
function UploadTo-Ftp {
    $WRequest = [Net.WebRequest]::Create("$ftpPath/$flH/$name")
    $WRequest.Method = [Net.WebRequestMethods+FTP]::UploadFile
    $WRequest.Credentials = [Net.NetworkCredential]::new($ftpLogin,$ftpPass)
    $WRequest.UsePassive = $false
    $WRequest.KeepAlive = $false
    $WRequest.Timeout = 2048
    $rStream = $WRequest.GetRequestStream()
    $rStream.WriteTimeout = 1024
    try{
        $buffer = [Byte[]]::new(1024)
        $picStream.Position = 0
        do{
            $ReadLength = $picStream.Read($buffer, 0, 1024)
            $rStream.Write($buffer, 0, $ReadLength)
        }
        while($ReadLength -ne 0)
        $rStream.close()
        $rStream.Dispose()
    }
    catch{throw $_}
    finally{$WRequest.Abort()}   
}
function Create-FtpDirectory($dir){
    $WRequest = [Net.WebRequest]::Create("$ftpPath/$dir")
    $WRequest.Method = [Net.WebRequestMethods+FTP]::MakeDirectory
    $WRequest.Credentials = [Net.NetworkCredential]::new($ftpLogin,$ftpPass)
    $WRequest.GetResponse()|Out-null;$WRequest.Abort()
}
function DeleteFrom-Ftp{
    $WRequest = [Net.WebRequest]::Create("$ftpPath/$flH/$name")
    $WRequest.Method = [Net.WebRequestMethods+FTP]::DeleteFile
    $WRequest.Credentials = [Net.NetworkCredential]::new($ftpLogin,$ftpPass)
    $WRequest.GetResponse()|Out-null;$WRequest.Abort()
}
while($true){
    $t1 = date
    $gfx.CopyFromScreen(0, 0, $pic.Size)
    $picStream = [IO.MemoryStream]::new()
    $name = $t1.ToString('dd.MM.yyyy — HH.mm.ss ')+
            "[$env:COMPUTERNAME].png"
    $pic.save($picStream,'Png')
    $flD = $t1.ToString('dd.MM.yyyy')
    $flH = $t1.ToString('dd.MM.yyyy\/HH')
    if($flD-ne$do){Create-FtpDirectory $flD;$do=$flD}
    if($flH-ne$ho){Create-FtpDirectory $flH;$ho=$flH}
    try{UploadTo-Ftp}
    catch{
        DeleteFrom-Ftp
        try{UploadTo-Ftp}
        catch{
            DeleteFrom-Ftp
            Write-Host $_.exception -fo DarkYellow
            Write-Host "$name was not uploaded" -fo DarkRed
        }
    }
    $picStream.Close();$picStream.Dispose()
    $t2 = $shotDelay * 1000 - ((date)-$t1).
          TotalMilliseconds
    try{sleep -m $t2}catch{}
}
$gfx.Dispose();$pic.Dispose()
0
1 / 1 / 0
Регистрация: 07.01.2018
Сообщений: 39
27.01.2021, 16:37  [ТС]
Цитата Сообщение от Fors1k Посмотреть сообщение
попробуйте отправку другим способом
Спасибо что остаетесь в теме)
Попробовал способ, отправка не пошла совсем. У меня не стандартный порт получателя, ввожу его так: $ftpPath = 'ftp://ftp.domain.ru:90/screenshots',
Выдает ошибку
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Исключение при вызове "Create" с "1" аргументами: "Недопустимое значение URI: Указан недопустимый порт."
D:\Tech\Screen1.ps1:43 знак:5
+     $WRequest = [Net.WebRequest]::Create("$ftpPath/$flH/$name")
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : UriFormatException
 
Исключение при вызове "Create" с "1" аргументами: "Недопустимое значение URI: Указан недопустимый порт."
D:\Tech\Screen1.ps1:43 знак:5
+     $WRequest = [Net.WebRequest]::Create("$ftpPath/$flH/$name")
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : UriFormatException
 
Исключение при вызове "Create" с "1" аргументами: "Недопустимое значение URI: Указан недопустимый порт."
D:\Tech\Screen1.ps1:43 знак:5
+     $WRequest = [Net.WebRequest]::Create("$ftpPath/$flH/$name")
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : UriFormatException
Еще заметил такую штуку, поставил первый скрипт работать. 10 часов все отлично, потом два часа с пропусками, потом опять все нормально шлет. Без перезагрузки компа и режима сна.
Может это провайдер?)
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
27.01.2021, 17:17
Баркер, недоволен uri parser, хотя 90 - корректный порт.
Запустите:
PowerShell
1
2
3
4
5
cls
$ftpPath = 'ftp://ftp.domain.ru:90/screenshots'
[uri]$ftpPath
$WRequest = [Net.WebRequest]::Create("$ftpPath")
$WRequest.Abort()
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
27.01.2021, 18:35
Цитата Сообщение от Fors1k Посмотреть сообщение
хотя 90 - корректный порт.
с точки зрения корректности, любой порт из доступных 2^16, является корректным... но есть практика применения официальная и неофициальная... т.к. класс System.Uri создавался в недрах серьёзной компании, то он обязан соблюдать некие общепринятые стандарты схем...
0
1 / 1 / 0
Регистрация: 07.01.2018
Сообщений: 39
27.01.2021, 21:40  [ТС]
Цитата Сообщение от Fors1k Посмотреть сообщение
Запустите
PowerShell
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
PS C:\Users\V_GoodBoy_V> $ftpPath = 'ftp://ftp.domain.ru:90/screenshots'
PS C:\Users\V_GoodBoy_V> [uri]$ftpPath
 
 
AbsolutePath   : /screenshots
AbsoluteUri    : ftp://ftp.domain.ru:90/screenshots
LocalPath      : /screenshots
Authority      : ftp.domain.ru:90
HostNameType   : Dns
IsDefaultPort  : False
IsFile         : False
IsLoopback     : False
PathAndQuery   : /screenshots
Segments       : {/, screenshots}
IsUnc          : False
Host           : ftp.domain.ru
Port           : 90
Query          :
Fragment       :
Scheme         : ftp
OriginalString : ftp://ftp.domain.ru:90/screenshots
DnsSafeHost    : ftp.domain.ru
IdnHost        : ftp.domain.ru
IsAbsoluteUri  : True
UserEscaped    : False
UserInfo       :
 
 
 
PS C:\Users\V_GoodBoy_V> $WRequest = [Net.WebRequest]::Create("$ftpPath")
PS C:\Users\V_GoodBoy_V> $WRequest.Abort()
Так?)

Добавлено через 57 минут
Цитата Сообщение от Fors1k Посмотреть сообщение
Запустите
Я понял, свои значения нужно было подставить)) Вот :

PowerShell
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
PS C:\Users\V_GoodBoy_V> $ftpPath = 'ftp://myFTP.sn.mynetname.ne:90/'
PS C:\Users\V_GoodBoy_V> [uri]$ftpPath
 
 
AbsolutePath   : /
AbsoluteUri    : ftp://myFTP.sn.mynetname.ne:90/
LocalPath      : /
Authority      : myFTP.sn.mynetname.ne:90
HostNameType   : Dns
IsDefaultPort  : False
IsFile         : False
IsLoopback     : False
PathAndQuery   : /
Segments       : {/}
IsUnc          : False
Host           : myFTP.sn.mynetname.ne
Port           : 90
Query          :
Fragment       :
Scheme         : ftp
OriginalString : ftp://myFTP.sn.mynetname.ne:90/
DnsSafeHost    : myFTP.sn.mynetname.ne
IdnHost        : myFTP.sn.mynetname.ne
IsAbsoluteUri  : True
UserEscaped    : False
UserInfo       :
 
 
 
PS C:\Users\V_GoodBoy_V> $WRequest = [Net.WebRequest]::Create("$ftpPath")
PS C:\Users\V_GoodBoy_V> $WRequest.Abort()
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
27.01.2021, 23:14
YuS_2, ну на 90й порт такого исключения быть не может. Если указать 90999, то будет как раз такое сообщение.
Цитата Сообщение от Баркер Посмотреть сообщение
Так?)
Так. Как видите, указанный порт такую ошибку вызвать не может.
У меня этот код работает.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
28.01.2021, 09:39
Цитата Сообщение от Fors1k Посмотреть сообщение
ну на 90й порт такого исключения быть не может.
Это да. Надо смотреть на что ошибка вываливается... а именно:
Цитата Сообщение от Баркер Посмотреть сообщение
Исключение при вызове "Create" с "1" аргументами: "Недопустимое значение URI: Указан недопустимый порт."
Т.е. тут, скорее всего, переменная получила какое-то значение, выходящее за допустимые пределы числовых значений и проверку на 2^16 именно не проходит, а не на соответствие транспортному протоколу... видимо, всё же, такой проверки там нет...
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
28.01.2021, 15:20
Цитата Сообщение от YuS_2 Посмотреть сообщение
переменная получила какое-то значение
Тут неизвестно имя пк. Возможно, оно содержит что-то непотребное.

Баркер, попробуйте изменить имя файла:
PowerShell
52
$name = $t1.ToString('dd.MM.yyyy — HH.mm.ss.pn\g')
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
28.01.2021, 16:51
Цитата Сообщение от Fors1k Посмотреть сообщение
Возможно, оно содержит что-то непотребное.
Для такого случая существует метод эскейпинга шестнадцатеричными значениями:
PowerShell
1
2
3
$a = "ftp://ftp.domain.com/что-то совсем непотребное.$#=()[]\!"
$uri = [uri]::escapeuristring($a)
$uri
лишь бы на серверной стороне поняли, чего от него желают...
1
1 / 1 / 0
Регистрация: 07.01.2018
Сообщений: 39
29.01.2021, 14:01  [ТС]
Цитата Сообщение от Fors1k Посмотреть сообщение
Тут неизвестно имя пк
Имя ПК самое простое K1;K2;K3:K4 и т.д.

Вчера сделал пользователя с более долгим именем NorthernLights и на другом железе, так вот с него не отправляется вообще ни одного скрина.
Использую пока что самый первый скрипт, последний не пошел даже когда заменил
Цитата Сообщение от Fors1k Посмотреть сообщение
PowerShell
1
$name = $t1.ToString('dd.MM.yyyy — HH.mm.ss.pn\g')
и удалял разделение в конце \

Добавлено через 4 минуты
Цитата Сообщение от Fors1k Посмотреть сообщение
PowerShell
1
$name = (date -f 'dd.MM.yyyy—HH.mm.ss')+"[$env:COMPUTERNAME].png"
В первом скрипте в этой строке заменил COMPUTERNAME на UserName, потому что приходили каракули вместо имени)

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

Добавлено через 8 минут
Цитата Сообщение от YuS_2 Посмотреть сообщение
Т.е. тут, скорее всего, переменная получила какое-то значение, выходящее за допустимые пределы числовых значений и проверку на 2^16 именно не проходит, а не на соответствие транспортному протоколу... видимо, всё же, такой проверки там нет...
Слабо понимаю в этом. Если речь об адресе, то для отправки использую ddns микротик 3nda17br5j0v.sn.mynetname.net
Наглядно :
PowerShell
1
$ftpPath   = 'ftp://3nda17br5j0v.sn.mynetname.net:90/Office/1',
0
 Аватар для volodin661
7094 / 2325 / 353
Регистрация: 10.12.2013
Сообщений: 8,026
29.01.2021, 14:27
Цитата Сообщение от Баркер Посмотреть сообщение
Файлы приходят на FTP в zip формате, где дальше распаковываются и сортируются по №компьютера/дата/время
Непонятны резоны, по которым надо распаковывать всю эту несусветную тьму файлов ( "скринов камеры(каждые 5 секунд) и экрана(каждые 3 секунды" )

Это я к тому, что вряд ли на стороне распаковки живёт целый штат из 300 подполковников фсб в отставке, которые напряженно, до рези в глазах, вглядываются в каждый из распакованных файлов в режиме реального времени.
0
1 / 1 / 0
Регистрация: 07.01.2018
Сообщений: 39
29.01.2021, 14:33  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
Непонятны резоны, по которым надо распаковывать всю эту несусветную тьму файлов ( "скринов камеры(каждые 5 секунд) и экрана(каждые 3 секунды" )
Это я к тому, что вряд ли на стороне распаковки живёт целый штат из 300 подполковников фсб в отставке, которые напряженно, до рези в глазах, вглядываются в каждый из распакованных файлов в режиме реального времени.
Сидит человек всё смотрит и составляет отчеты вплоть до секунды.
Потому со стороны фтп уже написан скрипт который сортирует полученное по офис/компьютер(камера/наружное наблюдение)/дата/час/ и тут уже наши картиночки.
1 человек не имеющий фсбшного опыта справляется запросто))
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
29.01.2021, 18:32
Цитата Сообщение от Баркер Посмотреть сообщение
последний не пошел
Скрипту снова было не оч?((

Добавлено через 11 минут
Баркер, если хотите, можете создать папку 'test', предоставить к ней доступ, и прислать данные мне в лс для теста. После удалите ее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2021, 18:32

Покажите скрин экрана
Не могу запустить фартран на компе кто может скинте скриншот экрана работы программы program lab7 A=0.5; B=1.08; C=2.1; D=0.7 ...

GWT Скрин экрана
Доброго времени суток! Я новичок в gwt. Сейчас у меня стоит задача сделать при нажатие кнопки скрин экрана и экспорт получившегося...

Копия экрана(скрин шот)
Добрый день! Как в линуксе сделать копия экрана(скрин шот)? :(Пож. поподробнее, с линуксом у меня напряженные отношения.О_о С уважением...

Чёрно-белый скрин экрана
всем привет. помогите делать ч.б скрины procedure TForm1.Button4Click(Sender: TObject); {ñêðèí ýêðàíà} var desk:hDC; ...

Скрин экрана в неактивной учётке
Есть такой код: Bitmap screenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 25.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru