Интересни PowerShell примери

Скрипт който връща гео-информация за позицията (адрес, координати, ISP и др.) според IP адреса използвайки външна услуга:

Add-Type -AssemblyName System.Web

$wc = New-Object system.Net.WebClient

# JSON -> http://ip-api.com/json
# XML -> http://ip-api.com/xml
# CSV -> http://ip-api.com/csv
# Line -> http://ip-api.com/line
$ret = $wc.downloadString("http://ip-api.com/line")
$ret

Примерен скрипт за намиране на адреса по дадени координати:

Add-Type -AssemblyName System.Web

#Example
$lat = "42.705311"
$lng = "23.323620"

$wc = New-Object system.Net.WebClient

#xml -> ...maps/api/geocode/xml?...
#json -> ...maps/api/geocode/json?...
[xml]$ret = $wc.downloadString("https://maps.googleapis.com/maps/api/geocode/xml?latlng=$lat,$lng")
#$ret.OuterXml

# result[0] -> En
# result[1] -> BG ...
Write-Host $ret.GeocodeResponse.result[0].formatted_address

 

 

Измерване на мрежово напрежение, ток, мощност и енергия с помоща на специализиран модул

Наскоро се сдобих с панел който измерва напрежение, ток, мощност и енергия – http://www.aliexpress.com/item/PEACEFAIR-AC-100A-Digital-LCD-power-meter-power-energy-Volt-Ammeter-with-shell-4-led-panel/32320321777.html?s=p

m1

m2

Производство е на фирмата Pui Ching (Peacefair), модел PZEM-004 (v3.0). Модулът предлага възможност за включване към компютър (или друг контролер) и възможност за четене на данните от панела в реално време. За комуникация, панела разчита на серийна комуникация от типа RS232 (TTL) с интерфейс който е галванично разделен (чрез оптрони) от мрежовото напрежение.

Поглеждаме отвътре:

m3

Следните по-интересни елементи се забелязват от пръв поглед:

Разбира се, целта бе модулът да се свържи към компютър за да могат данните да се записват някъде. След няколко-дневни, безуспешни опити в комуникация с китайците, да науча детайли относно параметрите на връзката (скорост и др.настройки) реших да поровя в Нет-а и открих, че комуникацията се извършва на 9600, 8-N-1. От китайците, намерих линк от къде може да се изтегли софтуера който предлага възможности да показва индикациите (https://mega.nz/#!WoxGgCSS!A9pDXDXrv8nwUgJmhXBl-dhFt-JzOwuBg_JGq5qsD0o), но за съжаление всичко е на йероглифи и нищо не се разбира.

Следвайки указанията в документацията видях, че трябва да се изпращят заявки (команди) след което модула ще отговори подобаващо. Табличката показва възможните команди и примерни отговори от страна на модула:

NO. function Head Data1- Data5 Sum
1 voltage B0 C0 A8 01 01 00 (Computer sends a request to read the voltage value) 1A
A0 00 E6 02 00 00 (Meter reply the voltage value is 230.2V) 88
2 current B1 C0 A8 01 01 00 (Computer sends a request to read the current value) 1B
A1 00 11 20 00 00 (Meter reply the current value is 17.32A) D2
3 Active power B2 C0 A8 01 01 00 (Computer sends a request to read the active power value) 1C
A2 08 98 00 00 00 (Meter reply the active power value is 2200w) 42
4 Read energy B3 C0 A8 01 01 00 (Computer sends a request to read the energy value) 1D
A3 01 86 9f 00 00 (Meter reply the energy value is 99999wh) C9
5 Set the module address B4 C0 A8 01 01 00 (Computer sends a request to set the address, the address is 192.168.1.1) 1E
A4 00 00 00 00 00 (Meter reply the address was successfully set) A4
6 Set the power alarm threshold B5 C0 A8 01 01 14 (computer sends a request to set a power alarm threshold) 33
A5 00 00 00 00 00 (Meter reply the power alarm threshold was successfully set) A5

Или накратко:

B0 C0 A8 01 01 00 1A - sends a request to read the voltage value
B1 C0 A8 01 01 00 1B - sends a request to read the current value
B2 C0 A8 01 01 00 1C - sends a request to read the active power value
B3 C0 A8 01 01 00 1D - sends a request to read the energy value
B4 C0 A8 01 01 00 1E - sends a request to set the address to 192.168.1.1
B5 C0 A8 01 01 14 33 - sends a request to set a power alarm threshold

rs232ttlwires

Остана да се свърже подходящо кабелче към компютъра (USB-RS232/TTL) и да закачите жиците (цветовете може да се различават за различните типове кабели).

За писането на софтуера използвах Borland C++ Builder който е доста стар, но пък удобен за такива малки проекти. След няколко часово експериментиране се получи следната програма с която може да се четат данните:

ACtest1ACtest

Частта от кода която обслужва самата комуникация с модула е следната:

HANDLE hComm;
DWORD dwMask;
OVERLAPPED ovr;
DCB dcb;
unsigned char setvalue1[7] = { 0xB4, 0xC0, 0xA8, 0x01, 0x01, 0x00, 0x1E }; // Set the address to 192.168.1.1
unsigned char setvalue2[7] = { 0xB0, 0xC0, 0xA8, 0x01, 0x01, 0x00, 0x1A }; // Read the voltage value
unsigned char setvalue3[7] = { 0xB1, 0xC0, 0xA8, 0x01, 0x01, 0x00, 0x1B }; // Read the current value
unsigned char setvalue4[7] = { 0xB2, 0xC0, 0xA8, 0x01, 0x01, 0x00, 0x1C }; // Read the active power value
unsigned char setvalue5[7] = { 0xB3, 0xC0, 0xA8, 0x01, 0x01, 0x00, 0x1D }; // Read the energy value
unsigned char getvalue[7] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };


// initialize a serial connection
hComm = CreateFile(ком-порта, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hComm == INVALID_HANDLE_VALUE) { обработка на грешки }

// setup comm params: 9600-8-N-1
GetCommState(hComm, &dcb);
dcb.BaudRate = 9600;
dcb.fOutX = false;
dcb.fInX = false;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
SetCommState(hComm, &dcb);
// Read one char at a time.
GetCommMask(hComm, &dwMask);
dwMask |= EV_RXCHAR;
SetCommMask(hComm, dwMask);

...
//-----------------
// sent query about voltage
        for (int i=0; i<7; i++) {
                WriteFile(hComm, &setvalue2[i], 1, &dwMask, NULL);
        }
        Sleep(10);
        // read voltage
        for (int k=0; k<7; k++) {
                ReadFile(hComm, &getvalue[k], 1, &dwMask, NULL);
        }
        // Display Voltage
        Memo1->Lines->Add("Voltage: " + IntToStr(getvalue[2]) + "." + IntToStr(getvalue[3]) + " /V/");
//-----------------
// sent query about Amperage/Current
        for (int i=0; i<7; i++) {
                WriteFile(hComm, &setvalue3[i], 1, &dwMask, NULL);
        }
        Sleep(10);
        memset(getvalue, 0x0, 7);
        // read current
        for (int k=0; k<7; k++) {
                ReadFile(hComm, &getvalue[k], 1, &dwMask, NULL);
        }
        // Display Amperage/Current
        Memo1->Lines->Add("Current: " + IntToStr(getvalue[2]) + "." + IntToStr(getvalue[3]) + " /A/");
//-----------------
// sent query about active power
        for (int i=0; i<7; i++) {
                WriteFile(hComm, &setvalue4[i], 1, &dwMask, NULL);
        }
        Sleep(10);
        memset(getvalue, 0x0, 7);
        // read active power value
        for (int k=0; k<7; k++) {
                ReadFile(hComm, &getvalue[k], 1, &dwMask, NULL);
        }
        // Display Active Power value
        Memo1->Lines->Add("Power: " + IntToHex(getvalue[1],2) + " " + IntToHex(getvalue[2],2) + " " + IntToHex(getvalue[3],2) + " /W/");
//-----------------
// sent query about Energy
        for (int i=0; i<7; i++) {
                WriteFile(hComm, &setvalue5[i], 1, &dwMask, NULL);
        }
        Sleep(10);
        memset(getvalue, 0x0, 7);
        // read energy value
        for (int k=0; k<7; k++) {
                ReadFile(hComm, &getvalue[k], 1, &dwMask, NULL);
        }
        // Display Energy value
        Memo1->Lines->Add("Energy: " + IntToHex(getvalue[1],2) + " " + IntToHex(getvalue[2],2) + " " + IntToHex(getvalue[3],2) + " /Wh/");    
//-----------------
CloseHandle(hComm);

Оригиналния китайски софтуер може да бъде изтеглен от тук или тук, като преди това е необходимо да се инсталира драйвер за USB<->RS232 конвертора. Паролата която изисква програмата е admin.

Налична е библиотека за Arduino: https://github.com/olehs/PZEM004T

Подробно ревю на руски има на следния адрес: https://mysku.ru/blog/china-stores/38717.html

Още примери (с Raspberry Pi, Arduino, ESP8266) има на следните линкове:

https://mysku.ru/blog/china-stores/43331.html

https://wiki.cuvoodoo.info/doku.php?id=spark_counter

http://zftlab.org/pages/2016050700.html

http://www.xpablo.cz/?p=899

И накрая, като малка забележка, искам да добавя, че при всяка заявка към модула той издава звук от малък зумер (вижда се на картинката горе) което е доста дразнещо и е по-добре да се разпой от платката.

Скрипт за динамично обновяване на DNS с помоща на No-IP за Mikrotik

Ако имате реален IP адрес който не е статичен и бихте желали да го достъпвате е най-лесно да си регистриране някоя от безплатните услуги от сорта на DynDNS или NoIP. За да работят те е необходим агент, който трябва да се инсталира и конфигурира на някое ПЦ (или рутер) в мрежата зад този адрес. Обикновенно при настройката се задава през какъв интервал този агент да се свързва към тези доствчици за осигуряване на динамични имена и да рапортува реалния външен адрес. Тук ще покажа един прост скрипт за Микротик който работи с NoIP и ви освобождава от нуждата да инсталирате агент на някакво ПЦ.

След като си направите регистрация в NoIP отивате във вашия Mikrotik и от System -> Scripts въвеждате следния скрипт:

##############Script Settings##################
 :local NOIPUser "име"
 :local NOIPPass "парола"
 :local WANInter "име на интерфейса за Интернет"
 :local NOIPDomain "твоятдомейн.no-ip.org"
 ###############################################
 :local IpCurrent [/ip address get [find interface=$WANInter] address];
 :for i from=( [:len $IpCurrent] - 1) to=0 do={
   :if ( [:pick $IpCurrent $i] = "/") do={
     :local NewIP [:pick $IpCurrent 0 $i];
     :if ([:resolve $NOIPDomain] != $NewIP) do={
        /tool fetch mode=http user=$NOIPUser password=$NOIPPass url="http://dynupdate.no-ip.com/nic/update\3Fhostname=$NOIPDomain&myip=$NewIP" keep-result=no
       :log info "NO-IP Update: $NOIPDomain - $NewIP"
      }
    }
 }

Като въвеждате вашите данни както е описано в скрипта по-горе. Отбелязвате read, write и test полиситата както е показано на картинката:

mikrotik-noip1

Може да изпълните скрипта с бутона “Run Script”, но за да го направите да се стартира автоматично трябва от System -> Scheduler да направите нова задача за изпълнение през определен период от време. Следния пример на картинката показва как би могла да изглежда такава задача:

mikrotik-noip2

Това което остава да направите е да осигурите рутера ви да позволява входящи връзки и да пренасочвате трафика по подходящ начин към вътрешната мрежа.

Повече информация има на този адрес: Dynamic DNS Update Script for No-IP DNS (http://wiki.mikrotik.com/wiki/Dynamic_DNS_Update_Script_for_No-IP_DNS)

Работа с VLAN-и и Realtek мрежови карти

VLAN-ите се ползват масово в съвременните мрежи за по-добра организация и логическо разпределение на връзките. Много често администраторите имат нужда от достъп по едно и също време до различни VLAN-и за да могат бързо да си изпълняват своята работата. За да се реализира това може се използват няколко различни мрежови карти на един компютър. Това разбира се не е много рационално, а дори и неудобно ако се ползва преносим компютър (с USB to LAN адаптери примерно).

Съвременните Intel-базирани мрежови карти разполагат с инструмент който позволява да се работи с различни VLAN-и при наличие на една мрежова свързаност. За съжаление, те не са толква често срещани при работни станции от нисък клас и евтини лаптопи, а вместо тях масово се ползват по-евтини Realtek-базирани решения. Но, оказва се, Realtek също имат инструмент, който може да инсталира виртуални мрежови карти, които да бъдат настроени за различни VLAN-и. Realtek Ethernet Diagnostic Utility е пакета който трябва да инсталирате за да може да се възползвате от тази функционалност. Актуалната версия може да намерите от сайта на производителя (тук) напълно безплатно. Налични са версии за Windows XP/7/8/10 на архива Windows Diagnostic Program който трябва да свалите.

След инсталация ще се появи ново меню в списъка с програми:

realtek_cfg0

При стартиране на инструмента ще видите раздел VLAN:

realtek_diag

При избиране ще видите опции за добавяне нов VLAN. Ако го направите и разгледате мрежовите карти налични в Windows ще забележите, че за всеки нов VLAN който създавате се появява нова виртуална мрежова карта. В нейните настройки може да изберете протоколите който желаете:

realtek_cfg3

Ако искате да промените вече устновен VLAN може да го направите или от инструмента на Realtek или от Advanced настройките както се вижда от тук:

realtek_vlan_cfg

Оригиналния, физически адаптер остава наличен, като в неговите настройки трябва да премахнете всички протоколи така, че да остане само Realtek Vlan Protocol Driver (NDIS 6.x):

realtek_cfg1

За да работи всичко нормално трябва опцията Priority & VLAN да е Enabled както се вижда:

realtek_cfg2

На този етап, ако вече сте си дефинирали някакви VLAN ID-та (и има налични такива конфигурирани от мрежовите администратори) мрежовите адаптери ще си вземат съответните настройки по DHCP (ако има такива в съответния сегмент) или ще трябва сами да си установите IP настройките. Имайте предвид, че в зависимост от реда на инициализиране на картите, настройките в Windows за пътя на рутиране (default gateway) могат да бъдат променени. Може да проверите това с route print командата и да установите подходящи metric настройки (за да не е Automatic):

realtek_cfg5(може и чрез netsh set interface “име на интерфейс” metric=xxx).

Сега, след като разполагате с много карти, можете да ги използвате за по-комфортна работа както намерите за добре.

Например, възможно е да установите виртуална машина (примерно VMware) да бъде свързана към съответната VLAN мрежа като използвате Virtual Network Editor-а:

vmware_realtek_cfg1

По този начин ако укажете на дадена виртуална машина да използва VMnet14, както е показано на картинката, тя ще има достъп до мрежата със съответния VLAN.

Успех и приятна работа!

Източници и допълнителни материали:

Realtek Software: Drivers & Utilities
http://www.realtek.com.tw/Downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&DownTypeID=3&GetDown=false

Fun with Vyatta and home routing
http://virtuallymikebrown.com/2013/01/08/fun-with-vyatta-and-home-routing/

Realtek Virtual LAN Drivers on Windows
http://todaystechonology.blogspot.bg/2012/10/realtek-virtual-lan-drivers-on-windows.html

Включване на ATX захранване без компютър

За да включите едно стандартно ATX захранване, без компютър е необходимо просто да свържите два извода един с друг – PS_ON и маса (Ground). Ето как изглеждат самите конектори:

atx-connatx-psonpic

Други стандартни конекетори използвани при компютрите:

ATX-connectors

Монтиране на Volume Shadow Service (VSS) копие в папка на файловата система

По подразбиране в Windows е включена Volume Shadow Copy (VSS) услугата (известна и като Volume Snapshot Service или Volume Shadow Copy Service).  Услугата работи само върху NTFS и е въведена за първи път в Windows XP/2003. Тя има за цел да пази системните файлове от загуба или промяна и се използва от много видове архивиращ софтуер, тъй като осигурява копие на файловете дори те да се използват в момента от разни процеси (и съответно заключени за четене/запис).

Тук няма да разглеждам графичния интерфейс, който е наличен в Windows и съответните настройки, а ще опиша една техника за монтиране на конкретно копие от VSS в дадена папка на файловата система.

Управлението на услугата от команден ред става чрез комадата vssadmin. За да се видят текущите направени копия на дяла може да се използва командата:

vssadmin list shadows

vssadmin_list

По този начин се ориентираме за броя на налични VSS копия, тома и часът на създаване на “снимката” на файловата система и т.н. Ако искаме да проверим състоянието за раличен дял, трябва да се укаже буквата му както следва (пример за E:\):

vssadmin list shadows /for=E:\

След като имаме списъка си харесваме едно от копията и с помоща на командата mklink указваме папка, къде да се “монтира” това копие на файловата система (тоест правим символична връзка):

mklink /D  C:\<директория>  \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy#\

Пример:

mklink /D C:\test \\?\Volume{2455d90b-77c0-11e4-824f-806e6f6e6963}\
 symbolic link created for C:\test <<===>> \\?\Volume{2455d90b-77c0-11e4-824f-806e6f6e6963}\

След това би следвало да видим папката в Windows Explorer и да можем спокойно да разглеждаме съдържанието което сме монтирали от съответната дата.

Ако искате да премахнете символичната връзка използвайте командата:

rmdir <папка>

Пример:

rmdir C:\test

Информация и връзки

Symbolic Links
Mounting the Shadow Volume
Mklink
How to Create and Use Links with MKLINK in Windows
Microsoft DOS mklink command
How to remove a symbolic link?

Безплатно решение за архивиране на данни в облака

Тази статия е продължение на предишните две (Споделяне на облачно дисково пространство от Box.com между различни устройства (Windows, Linux и Android) и Добавяне на Microsoft OneDrive като устройство в Windows Explorer на Windows 7/8) в който описах как може да се ползва от дисковото пространство предоставяно безплатно от услуги като Microsoft OneDrive или Box.com.
Тук искам да представя един процукт който открих наскоро – Duplicati. Това е безплатно решение с отворен код за архивиране на данни. Програмата е налична на на следния адрес – http://www.duplicati.com/. Повече за кода на програмата и технически детайли има на следния адрес https://github.com/duplicati/duplicati (https://code.google.com/p/duplicati/).
Някой от ключовите функции на приложението са:

  • Поддръжка на Volume Snapshot Service (VSS) под Windows или Logical Volume Manager (LVM) под Linux
  • Поддръжка на инкрементал бекъпи
  • Позволява съхраняване на данните върху FTP, Cloudfiles, WebDAV, SSH (SFTP), Amazon S3 и други
  • Възможност за настройване на автоматични архиви през определен интервал от време
  • Криптиране на архивите чрез AES-256
  • Има версии за Windows, Linux и Mac OS X
  • Управление на трафика и други

Тук искам да покажа как с помоща на тази програма може да се конфигурира архив на Windows който да се съхранява данните в облака чрез WebDAV. Ще пропусна инсталацията на програмата защото няма нищо специално. Това което ще разгледам по-подробно е как да се настрой WebDAV
протокола.

За създаване на нов архив се използва Duplicati Setup Wizard. Първоначално избирате име за профила за архива. Следва да изберете какво ще архивирате:

duplicati-wiz-1Могат да са стандартните директории за документи и картинки от вашия профил и т.н. или сам да дефинирате папките който искате да се архивират чрез Custom folder list опцията.

На следващата стъпка изберете дали искате архива да бъде криптиран и въведете парола:

duplicati-wiz-2Избираме къде ще се съхранява архива – WebDAV:

duplicati-wiz-3Следват настройките. За примера съм използвал настройките за Box.com, но може да бъдат въведени за който и да е друг подобен доставчик поддържащ WebDAV.

duplicati-wiz-4Тествайте връзката след като въведете настройките за да се уверите, че всичко е правилно:

duplicati-wiz-5Ако всичко е наред може да продължите напред:

duplicati-wiz-6От тук може да направите допълнителна конфигурация на архива включваща:

  • колко често да се стартира
  • кога да се премехват старите архиви
  • настройки за размера и възможности за ограничение на трафика през мрежата
  • допълнителни филтри за типовете файлове и т.н.

Тези настройки са индивидуални за всеки спред желанието и нуждите и няма да бъдат разглеждани. Имайте предвид, че по подразбиране програмата дели архива на файлове по 10МБ. Това е добре тъй като размера на файла трансфериран през WebDAV е ограничен по подразбиране на 50МБ в Windows. Разбира се, може да промените тази опция за да минимизирате броя на файловете който ще се създадат.

Ограничения може да има и от старна на сървъра така, че е добре да се запознаете с тях предварително. За Box.com размера на файла който може да се качва зависи от абонаментния план. За безплатната версия той е 250MB.

Програмата поддържа и други доставчици на услуги така, че може да се запознаете и с тях. При всички приложения препоръчвам да разгледате този безплатен продукт, който може да бъде сериозна конкуренция на много комерсиални решения.

 

 

 

Споделяне на облачно дисково пространство от Box.com между различни устройства (Windows, Linux и Android)

Box.com имат промоция която предлага до 50GB безплатно дисково пространство – http://community.box.com/t5/Billing/Box-Promotions-FAQ/ta-p/5
Ако вече сте се възползвали от нея, вероятно се чудите как може да използвате това допълнително пространство по най-ефективен начин. Споделянето между различни устройства е голямо удобство, но и предизвикателство. На сайта на Box.com ще откриете най-различни приложения с чиято помощ може да синхронизирате данните. Моите търсения по темата разкриха, че Box.com поддържа WebDAV протокола (http://community.box.com/t5/Managing-Your-Content/Does-Box-support-WebDAV/ta-p/310) който позволява всеки клиент с такава поддръжка да може да осъществява достъп до файловия ресурс.

В Windows има вградена поддръжка и можете да монтирате това пространство като буква или мрежова връзка директно в Windows Explorer. Подобни стъпки вече съм описвал в предходен пост: Добавяне на Microsoft OneDrive като устройство в Windows Explorer на Windows 7/8 За да направите настройката в Windows ще Ви трябват следните данни:

Server: https://dav.box.com/dav
Login: имейла от регистрацията в Box.com
Password: вашата парола

При проблеми с връзката към Windows клиенти може да разгледате следните статии от Microsoft:

https://support.microsoft.com/en-us/kb/2668751
https://support.microsoft.com/en-us/kb/900900

Можете да конфигурирате и Linux да използва този ресурс. При Ubuntu това става по следния начин:

  1. От файл-мениджъра изберете Connect to Server…
    ubuntu-webdav0
  2. В полето за адрес на сървъра въведете davs://dav.box.com/dav
    ubuntu-webdav1
  3. Въведете потребителското име и парола за сайта
    ubuntu-webdav2
  4. Вече трябва да виждате папката в раздела Network:ubuntu-webdav3

Мобилните клиенти също могат да бъдат настроени за да се възползват от тези ресурси. Пример за приложение за Android, което позволява достъп през WebDAV e ES File Explorer. Можете да направите настройката от раздела Network и изберете създаване на нова връзка като определите протокола да е webdav. За настройка ще е нужно да въведете следните данни:

Server: dav.box.com/dav
Port: 443
[x] Encryption (https)
User: Име
Password: Парола
Display as: Име по ваше желание

Има и други подобни, безплатни клиенти който поддържат WebDAV така, че избора на кое приложение точно ще се спрете е изцяло Ваш.

Mac OS X също има поддръжка на WebDAV и може да бъде настроена. Oт Box.com препоръчват да се ползва външно приложение защото вградената поддръжка на WebDAV може да не работи коректно с тяхната конфигурация.

 

Добавяне на Microsoft OneDrive като устройство в Windows Explorer на Windows 7/8

Всеки който има акаунт в Microsoft може да активира OneDrive и да се възползва от място за съхранение на данни в облака. В последните версии на Windows (8.1 и 10), OneDrive клиента е вграден в операционната система, но по-старите системи (Windows 7, 8) го нямат и трябва да се изтегли допълнителен клиент – https://onedrive.live.com/about/en-nz/download/

Тук ще покажа един друг начин за използване на OneDrive без инсталиране на допълнителен софтуер. Става дума за използването на функцията за монтиране на устройство в Windows Explorer като устройство или връзка като мрежов ресурс (Map network drive…). Тази функционалност се осигурява благодарение на WebDAV технологията поддържана от OneDrive услугата.

За да си монтирате OneDrive като устройство в Explorer следвайте следните стъпки:

  1. Отворете OneDrive през сайта https://onedrive.live.com/
  2. След като се логнете, при преминаване на мишката върху някой файл, който вече сте качили (може да копирате нещо, ако досега не сте го направили) ще видите връзката в статус лентата долу в ляво, която ще изглежда по следния начин (или подобен): ms-idАко искате да копирате връзката може да използвайте ‘Copy Link’ през десния бутон с мишката или F12 клавиша за да отворите прозореца за разработчици и откриете линка и оттам да копирате информацията:
    onedrive-1
  3. В линка който сте копирали Ви трябва частта която указва вашето client id. В случая става дума за cid=XXXXXX (clientid) от линка горе. Отворете един Notepad и запазете това id защото ще ви трябва след малко.
  4. Отворете Windows Explorer/My Computer и изберете Map network drive…
  5. В полето folder въведете https://d.docs.live.net/ последван от вашия client id. Пример – https://d.docs.live.net/426f625XXXXXXX
    map-drive-1
  6. Изберете подходяща буква на у-во, и опциите който желаете (‘Reconnect at sign-in’, ‘Connect using different credentials’)
    Забележка: Тук може да изберете опцията “Connect to a Web site that you can use to store your documents and pictures.”. Тя няма да съзададе буква/у-во в Explorer, а мрежова локация (папка) за достъп до ресурса, но резултата ще е същия – ще имате достъп до вашите данни.
  7. Продължете с Finish и ще бъдете попитан за потребителско име и парола. След като се въведат ще имате монтиран OneDrive като у-во в Explorer. Честито!
    map-drive-3
    Ако това не сработи (примерно получавате съобщение за грешка), изберете опцията “Connect to a Web site that you can use to store your documents and pictures.” и продължете с помощника по-нататък.
  8. Изберете “Choose a custom network location” и в прозореца където се указва адреса на ресурса въведете https://d.docs.live.net/426f625XXXXXXX (с вашия client id).
    Продължавате с Next и си избирате име под което да фигурира връзката. След потвърждение трябва да видите диалог за потребителско име и парола. Потвърдете с вашите данни за вход в OneDrive. Ако всичко е минало успешно трябва да може да видите резултата в Explorer подобен на този:
    map-drive-4С това конфигурацията приключва.

Действията по монтиране на у-вото може да се извършват и чрез команден ред по следния начин:

net use * https://d.docs.live.net/вашия-клиентски-номер/ /user:"име" "парола"

Имайте предвид, че по подразбиране в Windows има установено ограничение на размера на файла, който може да се качва през WebDAV. Тази настройка може да се регулира от следния ключ в Registry:

HKEY_LOCAL_MACHINE\SYSTEM\ControlControlSet\Services\WebClient\Parameters
"FileSizeLimitInBytes"=dword:02faf080

Стойността по подразбиране е 50Mб (02faf080 = 50000000). Максималната допустима стойност е 2GB.

И накрая няколко думи за сигурността. Принципно WebDAV не се смята за сигурен протокол, но в случая комуникацията върви през SSL така, че може да се приеме за достатъчно сигурна за използване от домашни потребители. Разбира се, винаги може да използвате дисковото пространство предоставяно от OneDrive за да съхранявате криптирани файлове ако се опасявате от неоторизиран достъп до вашите данни.

Източници и допълнителна информация

http://blogs.msdn.com/b/robert_mcmurray/archive/2014/09/30/using-the-webdav-redirector-with-onedrive-part-1-standard-security.aspx

http://blogs.iis.net/robert_mcmurray/using-the-webdav-redirector-with-onedrive-part-1-standard-security

http://www.iis.net/learn/publish/using-webdav/using-the-webdav-redirector

https://en.wikipedia.org/wiki/WebDAV

Бърз и лесен начин да се направи копие на Web или FTP сайт (wget)

Понякога е удобно да свалим даден сайт за да можем да го преглеждаме по-късно време или просто за да има архив в случай на нужда. Един много лесен начин е чрез използване на командата wget.
С нейна помощ могат да се свалят файлове, да се обхождат всички директории (рекурсивно) и да се сваля цялото съдържание. Wget има версии за всички популярни операционни системи (Windows/Linux/MacOS) и инсталирането/компилирането/ е лесно.
Типично, командата за сваляне на огледално копие се използва така:

wget -m http://www.example.com
wget -m ftp://ftp.example.com

където -m (или –mirror) е опцията указваща да се прави огледално копие. Може да се добави и опция -p (–page-requisites) която осигурява свалянето на всички “вградени” картинки в кода.

Недостатък на този метод може да се посочи, че линковете в самите страници остават непроменени сочейки url адреса на сайта. Към тази опция може да се добави и -k (–convert-links) която коригира линковете в страниците така, че да сочат към локалното копие което се сваля. По този начин сайта остава “работещ” тъй като връзките сочат към сваленото копие.

Повечето сайтове съдържат файл наречен Robots.txt който указва кой части от сайта могат да бъдат проучвани или не от търсещи машини и скриптове. За да се игнорира неговоро съдържание wget може да добави опцията ‐‐execute robots=off

Богатите възможности на wget предоставят дори възможност да имитира клиент добавяйки опцията ‐‐user-agent=… ,  например:

--user-agent="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

имитирайки, че това е Google bot или по следния начин:

--refer=http://google.com --user-agent="Mozilla/5.0 Firefox/4.0.1"

Ако желаете да свалите само определени файлове (например .pdf и .doc) тогава командата може да се укаже с опциията –accept (или -А):

wget -m --accept=pdf,doc http://example.com/

Ако сайта очаква автентикация тогава може да предоставите името и паролата:

wget --http-user=име --http-password=парола http://www.example.com/downloads/file.zip

Удобство е възможността да сваляте определени файлове който се различават само по номера в името като например картинки:

wget http://example.com/images/{1..20}.jpg

Основен недостатък на описания по-горе инструмент е динамичното съдържание на страниците на повечето сайтове. Използвайки множество скриптове, изпълняващи се в зависимост от действията на потребителя се “губи” съдържанието на такива сайтове и като резултат сайта частично “липсва” или не функционира правилно.

Въпреки това препоръчвам на всеки да се запознае с този мощен и безплатен инструмент който може да бъде много полезен при някой администартивни задачи.

Линкове за сваляне и допълнителна информация:

https://eternallybored.org/misc/wget/

http://sourceforge.net/projects/gnuwin32/files/wget/1.11.4-1/

http://www.labnol.org/software/wget-command-examples/28750/

https://www.gnu.org/software/wget/manual/html_node/

http://daniel.haxx.se/docs/curl-vs-wget.html