Что нового

Создание а потом отправка скриншота по FTP

zeionline

Новичок
Сообщения
36
Репутация
1
Версия AutoIt: v3.3.6.1

Описание:
Нужен скрипт который будет делать каждую минуту скриншот экрана, после чего отправлять его на FTP и удалять скриншот.
Примечания:
Название скринов - по дате и времени.
Спасибо.
 

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Код:
#include <ScreenCapture.au3>
#include <FTPEx.au3>

$file = @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & "-" & @MIN  & ".jpg"

While 1
	Sleep(60000)
	PrintScreen() 
	ftp()
WEnd

Func PrintScreen() 
	_ScreenCapture_Capture(@ScriptDir & "\" & $file)
EndFunc 

Func ftp() 
$server = 'server'
$username = 'login'
$pass = 'pass'

$Open = _FTP_Open('FTP')
$Conn = _FTP_Connect($Open, $server, $username, $pass, 1)
_FTP_FilePut($Conn, @ScriptDir & "\" & $file, "/public_html/" & $file)
$Ftpc = _FTP_Close($Open)
EndFunc



Отправка скриншота по e-mail
 

vitaliy54

Новичок
Сообщения
5
Репутация
0
Отличный скрипт, спасибо огромное, очень помог мне в моей борьбе с пользователями.

Код:
#include <ScreenCapture.au3>
#include <FTPEx.au3>


#NoTrayIcon
$k=0
While 1
    $file = @ComputerName & "." & @MDAY & "." & @MON & "." & @YEAR & " " & @HOUR & "-" & @MIN  & ".jpg"
    PrintScreen() 
    ftp()
	Sleep(3600000)
    
WEnd

Func PrintScreen() 
    _ScreenCapture_Capture(@HomeDrive & "\" & $file)
EndFunc 

Func ftp() 
$server = 'ftp.xxx.com'
$username = 'user'
$pass = 'user'

$Open = _FTP_Open('FTP')
$Conn = _FTP_Connect($Open, $server, $username, $pass, 1)
_FTP_FilePut($Conn, @HomeDrive & "\" & $file, "/temp/org1/" & $file)
$Ftpc = _FTP_Close($Open)
FileDelete ( @HomeDrive & "\" & $file )
EndFunc


Подскажите, как можно более усовершенсвовать эту схему. К примеру есть 10 подразделений, в каждом по 5 компьютеров. Сейчас у меня сыпится каждый час по одному скрину в папку temp/org1 к примеру. А хотелось бы чтобы с каждого подразделения заливалось в свою папку. Эти 10 каталогов я сам создам на сервере и укажу в каждом скрипте, чтобы заливался куда нужно (temp/org2, temp/orgN), но как можно указать, чтобы под каждый компьютер ежедневно создавалась папка в orgN и уже в неё помещался скриншот.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
vitaliy54 сказал(а):
Эти 10 каталогов я сам создам на сервере и укажу в каждом скрипте, чтобы заливался куда нужно (temp/org2, temp/orgN)...

vitaliy54 сказал(а):
но как можно указать, чтобы под каждый компьютер ежедневно создавалась папка в orgN и уже в неё помещался скриншот.

Вы сами себе противоречите. Кто должен создавать папку - вы или скрипт? Или проблема в том, как скрипт будет нумеровать папки? Можно опираться на IP, которые в пределах одной сети по-любому будут разные.
 

vitaliy54

Новичок
Сообщения
5
Репутация
0
Извините, не правильно выразился. я сам создам руками папки под эти 10 организаций. мне нужно чтобы скрипт создавал в папке в которую он будет заливать скриншоты папку с датой, чтобы не было каши. Пример:
/temp/org1/09.02.2012
/temp/org1/10.02.2012
/temp/org1/11.02.2012
/temp/org1/12.02.2012
и тд.

Сети разные, компьютеры разбросаны по разным городам. я их сортировать планирую по имени компьютера
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
vitaliy54,
Попробуйте примерно так.
Код:
#include <FTPEx.au3>
#include <Array.au3>

$sServer = 'Server'
$sUser = 'User'
$sPass = 'Pass'

$sFile = 'TestFile.txt'; скриншот

;определение подразделений org1 - orgN, ИМХО, тоже можно как-то автоматизировать. Если это сделать, то будет один универсальный скрипт для всех
;структуру папок сами определите
Dim $aDir[5] = [4, 'Temp', 'org1', @ComputerName, @MDAY & '_' & @MON & '_' & @YEAR]
$hOpen = _FTP_Open('MyFTP')
$hConn = _FTP_Connect($hOpen, $sServer, $sUser, $sPass, 1)

For $i = 1 To $aDir[0]
	_FTP_DirCreate($hConn, $aDir[$i])
	_FTP_DirSetCurrent($hConn, $aDir[$i])
Next
_FTP_FilePut($hConn, @ScriptDir & '\' & $sFile, $sFile)
;это можно не делать:
$aFile = _Ftp_ListToArray($hConn, 2, $INTERNET_FLAG_RELOAD)
;...
_FTP_Close($hOpen)
_ArrayDisplay($aFile)
 
Верх