Управление компьютером посредством DropBox

Здравствуйте, уважаемые Хабравчане. Хочу рассказать Вам как замечательный сервис DropBox помогает мне в доступе к домашнему компьютеру с рабочего. Ситуация сложилась так, что дома я подключен к локальной сети одного из местных провайдеров. Имею статический внутренний адрес и подключаюсь к интернету через VPN. Нахожусь за NAT'ом и белого адреса не имею. Организовать доступ к такому компьютеру извне, как мне кажется, не просто… TeamViewer и т.п софт на работе запрещён. Да и мне не нужен полный «оконный» доступ к домашней машине. Всё что мне было нужно это делать запросы на поиск такого-то файла, копирование его в DropBox, просмотр использования дискового пространства, нагрузки процессора, и т.п. Т.е. в идеале нужен просто shell. И я организовал нечто подобное связкой DropBox и программки logmon. У меня это работает на Windows XP SP2 и Windows 7.

Могу сказать что есть некоторые подобные альтернативы. Это и программка Akira (тоже использует Dropbox), и jabber-боты (Jabber-Shell). Но все они не заработали как надо. Akira имеет ограниченный набор команд доступных пользователю и невыносимо грузит систему, а Jabber-Shell похоже давно забыт разработчиком.

Организована у меня эта система так

Дома при запуске ОС запускается батник, который в свою очередь запускает консольную версию программы logmon с определённым файлом настроек, который заранее был сконфигурирован в программе logmon. А настроен он на то, чтобы непрерывно следить за определённым файлом в каталоге DropBox и при его изменении запускать его (в скрытом режиме). А следит программа за файлом сценариев Windows с расширением .bat. Вот, собственно и вся идея. Я на работе изменяю батник, сохраняю, как только он обновляется дома, моментально выполняется, результат его выполнения записывается в файл и через несколько секунд я вижу результат на работе.

Батник для запуска мониторинга:

cmdow @ /HID
"c:\Program Files\Log Monitor\logmcon.exe" "D:\logmon_auto_copy.mon"

cmdow — програмулька для прятанья окон файлов сценариев.
Используемая версия logmon:
Files and directories monitoring tool
=====================================
Version: 1.4.2
Home page: www.bitrix.ru/logmon/eng
Author: Vadim Dumbravanu, vad@bitrix.ru

Log Monitor is a files and directories monitoring tool. The program
periodically checks selected file's modification time and executes
external program if file's time was changed or not changed. For
directories it handles such events as files change, addition or
removal.

Works under Windows 95/98/Me/NT/2000/XP.

Содержание logmon_auto_copy.mon
; Log Monitor 1.4.2 Config File
; You can edit this file, but be accurate.

;;;
Paused=0
IsDirectory=1
FileName=D:\Dropbox
Comment=
Interval=10
RunOnce=0
ToPaused=0
WorkHours=0
Days=1111111
MonthDays=
ExcludedDates=
IncludedDates=
CacheID=4EB04739
RealTime=1
RealTimeInterval=0
CacheData=0
CheckExistingOnly=0
CacheDirectory=C:\Program Files\Log Monitor\cache
Mask=copy.bat
ExcludeMask=
DirMask=*
ExclDirMask=
FullPathMask=0
DirMonitoring=0
Subdir=0
CountHidden=0
Inverse=0
Conditions=1100
StorePrevInfo=0
ConditionType=0
OlderInterval=3600
IgnoreAdded=1
IgnoreOpened=0
Break=0
;
Action=1
Enabled=1
DelayBefore=0
ActComment=
Command=D:\Dropbox\copy.bat
Params=
Dir=D:\Dropbox
Show=3
Wait=0
MultiArgs=1
MaxFiles=0
TerminateTime=0
EOF



В батнике я держу закомментированными несколько необходимых заготовок чтобы быстро можно было подставить, например, путь к файлу/директории, раскомментировать строку и сохранить файл, этим самым вызвав его исполнение на домашней машине.

Вот пример некоторых задач:
rem Скинуть листинг директории в файл.
rem DIR "d:\2_KINO" /S > "d:\Dropbox\1.txt"
rem Скопировать что-то
rem copy "C:\1.bat" "D:\Dropbox\1.bat"
rem Выполнить поиск на домашнем компьютере и результат скинуть в файл.
rem "d:\PROGS\else\Everything-1.2.1.371\CommandLine\es.exe" *.m4b > "d:\Dropbox\1.txt"
rem Запустить программу
rem "c:\Program Files\Download Master\dmaster.exe" -autorun
rem ===================== WGET Download WAIT 10 secconds =====================
rem ping 1.1.1.1 -n 1 -w 10000 > nul 
rem wget -o d:\Dropbox\log-%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%_%random%.txt -P d:\Dropbox -i d:\Dropbox\download.txt
rem Вызвать окно с сообщением
rem ===================== Message WAIT 10 secconds =====================
rem ping 1.1.1.1 -n 1 -w 10000 > nul
rem msg.vbs
rem ===================== Youtube Download Message WAIT 10 secconds =====================
rem  ping 1.1.1.1 -n 1 -w 10000 > nul
rem perl perl.pl http://www.youtube.com/watch?v=xxxxxxxxxx
rem ping xxx.xxx.xxx.xxx > "d:\Dropbox\1.txt"
rem tasklist  > "d:\Dropbox\1.txt"
rem shutdown -s -f -t 1



Содержание msg.vbs:
x=msgbox("Разогревай! Через полчаса буду!", 4096+0+64, "Сообщение для жены )")



Теперь о плюсах и минусах такого решения.

Плюсы:
  1. Низкая ресурсоёмкость.
  2. Простота.
  3. Доступны все команды командного процессора windows.
  4. Работает на Windows 7.


Минусы:
  1. Не безопасное решение (человек, получивший доступ к Вашему аккаунту DropBox может получить полный контроль над вашим компьютером)
  2. Не высокая скорость исполнения.
  3. Большая вероятность ошибиться в сценарии.
  4. Отсутствие интерактивности (запускаемые строки в батнике лучше заранее проверять на компьютере, что они точно работают)
  5. Поскольку программа LOGMON уже давно не обновляется, могут возникнуть проблемы запуска её на новых ОС windows.
  6. Отсутствие кроссплатформенности.


Вывод


Могу сказать так. Я долго искал альтернативы данному решению, но ни одна из них не покрывала мои и так скромные потребности в полном объёме. Поэтому я пожертвовал в данном случае безопасностью в обмен на простоту и удобство.

Буду рад предложениям по искоренению минусов данной системы либо разумным альтернативам, а также если описанная мною лазейка кому-нибудь пригодится. Спасибо.
Share post

Similar posts

Comments 30

    +9
    Мсье знает толк… Но за изобретательность плюсик :)
      +3
      TeamViewer запрещён, а DropBox можно? Где логика?
        +5
        Наверно отдел безопасности не догадался о ТАКОМ использовании DropBox :) Я бы тоже не догадался :)
          0
          Скажем так о использовании дропбокса ввобще никто не догадывается, работает себе тихо-спокойно, а вот TeamViewer программа «шумная» и её использование конкретно запретили. Да и TeamViewer поставленную мной задачу никак бы не решил.
            0
            Можно и Гугл.Драйв использовать, главное идея…
              +1
              TeamViewer вполне функционирует как portable. У меня на работе интернет только через HTTP прокси.
              В плюс ко всему у тимвьювера есть режим не только «Удаленное управление», но и «Передача файлов», что, на мой взгляд, гораздо удобнее для копирования файлов, чем .cmd
              0
              Уважаемый, вам бы пригодился набор из MinGW+MSys на машине, на которой работает «шелл» — это облегчило бы автоматизацию подобных задач. Поверх, если есть желание, можно прикрутить Gentoo Prefix — это не так сложно и долго, как принято думать :)
                +4
                Еще можно Chrome Remote Desktop app, если Хром не запрещён =)
                  +2
                  И разрешен ли Jabber/XMPP? Если да, то можно сделать либо простой dumb-шелл через обмен текстовыми сообщениями, либо, что более функционально, сделать UDP->XMPP->UDP-релей, и завести через него OpenVPN :) Выбор UDP обусловлен тем, что он stateless — релей будет проще. Чтобы не заморачиваться с перехватом сетевых соединений, поднять локальный SOCK_DGRAM на верхнем порту, натравить на него OpenVPN, и все входящие датаграммы сжимать LZMA, паковать в base64 и пересылать текстом, а со входящими поступать в обратном порядке. Из-за использования JID-ов в качестве адресов, решается проблема с недоступностью пассивного конца туннеля.
                    –5
                    DynDNS уже лет десять позволяет получать свой актуальный IP. В том числе есть поддержка и в роутерах — они сами сообщают новый IP на сервер DynDNS.
                      0
                      Вы путаете динамический IP с NAT'ом.
                        0
                        Вы правы. Невнимателен.
                      +1
                      Обратите внимание на утилиту Everything search engine там есть небольшой встроенный веб-сервер для доступа к файлам из вне. Да и сама по себе очень полезная штука.
                      P.S. Я не имею к ней никакого отношения, просто давно пользуюсь.
                        0
                        Пользуюсь постоянно уже много лет. Даже в этой статье её упомянул
                        rem "d:\PROGS\else\Everything-1.2.1.371\CommandLine\es.exe" *.m4b > "d:\Dropbox\1.txt"
                        

                        Если бы я был с компьютером, к которому мне нужен доступ, в одной сети, вероятно использовал бы Everything в качестве http или ftp-сервера. Но у меня была другая задача.
                        0
                        А что это у Вас за скрипт такой интересный: perl.pl www.youtube.com/watch?v=xxxxxxxxxx
                          0
                          Потоковое на работе закрыто. Иногда использую Youtube Downloader Perl Script
                            0
                            ммм… спасибо. В качестве альтернативы могу посоветовать еще и такой вариант: www.ssyoutube.com/watch?v=xxxxxxxxxx
                            Тоже удобно. Кстати с помощью этого сервиса можно качать видео не только с ютуба.
                              0
                              savefrom.net хороший ресурс. Пользую их плагин для firefox чтобы музыку из вконтакта пачками выкачивать.
                              Можно ещё www.clipconverter.cc юзать. Плюс в скрипте в его «тихой» работе.
                          0
                          А почему бы просто не прокинуть cmd с домашней машины на дедик за пару баксов?
                            0
                            тоже первое, что пришло в голову: дешевый или бесплатный VPS, на нем VPN сервер, к которому коннектятся домашний и рабочий компы.

                            P.S.: оффлайном еще во времена fidonet наигрался
                              0
                              Про впн даже не стал упоминать, поскольку можно обойтись элементарным nc ip port -e cmd.exe. Хотя способов колоссальное множество, тот же hamachi, например.
                            0
                            Я как-то дома ставил uTorrent на мониторинг папке в дропбоксе, а с работы туда торрент-файлы скидывал. Настраивается быстро, получается удобно.
                              +1
                              ага. настроил в Dropbox папку для uTorrent из которой автоматически загружать .torrent файлы и в ней же подпапку в которую перемещать .torrent файлы завершенных задач — чтобы видеть когда закончилась закачка.
                              0
                              эм… а хром и расширение remote desktop уже не модно?
                                0
                                а вот хром с этим расширением у меня на работе не работает. то ли дело в том, что хром portable, то ли прокся слишком злая, но факт остается фактом — teamviewer работает, а управление через хром нет.
                                0
                                Какой крутой колхоз! Как мопс, который выглядит одновременно уродливо и мило:
                                Скрытый текст
                                image
                                  0
                                  прикольная идея.
                                  только нафига батники и LOGMON, если perl есть? — за счет него и кроссплатформенности можно добится.
                                    0
                                    Logmon удобен тем что может запускать *.bat файлы в фоне, не моргая при этом окнами пользователю. В принципе, если такого поведения можно добиться скриптом на perl, было бы замечательно. Ставишь в автозапуск скрипт, а он мониторит определённый файл на изменения и запускает его в случае их наличия. С perl было бы интересней, можно добавить в реализацию своих идей… Интересно ещё на счёт ресурсов — какой из вариантов будет наименее ресурсоёмким.
                                    0
                                    [комментарий удалён]
                                      0
                                      Амм… Web GUI для торрент качалки не подойдет?
                                      Remote Transmission использую с работы, можно дома назначить любой порт.
                                      Если нет возможности устанавливать приложения, то есть дополнения для браузеров.

                                      Only users with full accounts can post comments. Log in, please.