Скриптование
Feb. 25th, 2012 08:27 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вот наездники пигнвинов с чертями говорят, что главное - это возможность все автоматизировать своими руками. А я какой-то такой ленивый и люблю, чтобы за меня кто-то все сделал. Какбэ даже когда основной системой был Arch Linux и графическое окружение, собраное кустарным способом (Openbox, PyPanel там), все равно не тянуло что-то там скриптовать. Можно демона в rc.conf или там в автостарт Openbox'а что-то прописать, чтобы ручками не кликать. Но что-то большее? Мне всегда казалось, что проще каждый раз руками сделать, чем лезть и разбираться. Я, дубина, баш не знаю. Пробовал питон для написания скриптов - неприятно, все как-то ненативно и наискосок. Так и не писал.
Еще мне тут говорят, что F# это как Python только под ШИНДОУС. Питона вод винду какбэ нету, да? Обязательно надо найти язычек именно от Майкрософта и сказать, что вот альтератива. Ну конечно, именно как эльтернативу питону некий Дон Сайм эфшапрец задумывал. Надо в твиттор его оповестить, а то небось запамятовал истиных целей и отклонился от курса. Вот мне нравился в свое время питон. Очень хорошо было на нем всякие тензоры считать, сайты писать на джанге, твит-ботов каких-нибудь и, конечно же, УМНОЖАТЬ СТРОКУ НА ЧИСЛО. А потом пришло понимание какой-то хлипокости получаемых конструкций. Я ничего не говорю, какбэ не специалист, но мне жалко людей клепающих GUI на питоне. Есть же народная примета, что если гафическое приложение лагает, жрет сотни памяти и постоянно вылетает со всякиеи стэктрэйсами, то оно написано на питонес вероятностью 98%. Или вот с асинхронными системами что? Но это все так. Я просто криворукий, потому всегда боюсь, что где-то опечатался и просто написал фигню. Типизация, даже такая слабенькая как в C# успокаивает, дает надежду на стабильное будущее.
А это я к чему? Да решил вот проверить возможности F# для скриптописательтва. Ну REPL есть, для скрипта даже классы расписывать необязательно, вот решил попробовать написать скприт, который при подключении к рабочей VPN будет прописывать маршрут до моего рабочего ПК. Я какбы не даю выпоэночке вбрасывать мне маршруты. Весь трафик через VPN пускать не надо, тем более, что он все равно никуда дальше корпоративной подсети не уйдет.
Вот не знаю. Я скриптецы раз в 100 лет пишу, никак не могу понять, говно ли это? И как такое вообще сделать на питоне? Наверное же можно сделать, просто я экосистему дотнетов гораздо лучше знаю, потому догадывался, что смогу сделать за примелемое время. Время и впрям примелмое (ну минут 20 потратил), но результат как-то ниже моих ожиданий. Вроде F# краток и лаконичен, а тут такого наворотил. Либо эфшарп не торт, либо я криворук, либо же дело как раз в ШИНДОВС инфраструктуре, за которую всякие там любят ее материть. Еще я про PowerShell думал, да я его тоже не знаю. А стоит ли его учить, кто знает? Пригодится где?
PS: Забыл сказать, что при обычном запуске на Win7 оно ругается, что недостаточно прав доступа. Это нормально, ничего криминального. Но вот в дотнете, я например могу сделать:
а) чтобы оно само запрашивало права администратора
б) чтобы имея сохраненные данные админской учтеки (ОЛОЛО БЕЗОПАСТНОСТЬ) запускалось от админа.
Питон или руби какие так могут?
Еще мне тут говорят, что F# это как Python только под ШИНДОУС. Питона вод винду какбэ нету, да? Обязательно надо найти язычек именно от Майкрософта и сказать, что вот альтератива. Ну конечно, именно как эльтернативу питону некий Дон Сайм эфшапрец задумывал. Надо в твиттор его оповестить, а то небось запамятовал истиных целей и отклонился от курса. Вот мне нравился в свое время питон. Очень хорошо было на нем всякие тензоры считать, сайты писать на джанге, твит-ботов каких-нибудь и, конечно же, УМНОЖАТЬ СТРОКУ НА ЧИСЛО. А потом пришло понимание какой-то хлипокости получаемых конструкций. Я ничего не говорю, какбэ не специалист, но мне жалко людей клепающих GUI на питоне. Есть же народная примета, что если гафическое приложение лагает, жрет сотни памяти и постоянно вылетает со всякиеи стэктрэйсами, то оно написано на питонес вероятностью 98%. Или вот с асинхронными системами что? Но это все так. Я просто криворукий, потому всегда боюсь, что где-то опечатался и просто написал фигню. Типизация, даже такая слабенькая как в C# успокаивает, дает надежду на стабильное будущее.
А это я к чему? Да решил вот проверить возможности F# для скриптописательтва. Ну REPL есть, для скрипта даже классы расписывать необязательно, вот решил попробовать написать скприт, который при подключении к рабочей VPN будет прописывать маршрут до моего рабочего ПК. Я какбы не даю выпоэночке вбрасывать мне маршруты. Весь трафик через VPN пускать не надо, тем более, что он все равно никуда дальше корпоративной подсети не уйдет.
- open System
- open System.Diagnostics
- open System.Net.NetworkInformation
- let intName = "tbc"
- let pcIp = "192.168.11.141"
- let mask = "255.255.255.255"
- printfn "Trying find default gateway to %s" pcIp
- let int = NetworkInterface.GetAllNetworkInterfaces() |> Seq.find(fun i -> i.Name = intName)
- let gatewayIp = (int.GetIPProperties().UnicastAddresses |> Seq.head).Address
- printfn "Default gateway is %A" gatewayIp
- let buidProc file args =
- let p = new Process()
- p.StartInfo.UseShellExecute <- false;
- p.StartInfo.RedirectStandardError <- true;
- p.StartInfo.FileName <- file
- p.StartInfo.Arguments <- args
- p
- let removeRoute = buidProc "route" <| sprintf "delete %s" pcIp
- let insertRoute = buidProc "route" <| String.Format("-p add {0} mask {1} {2}", pcIp, mask, gatewayIp)
- printfn "Trying remove route to %s" pcIp
- removeRoute.Start() |> ignore
- removeRoute.WaitForExit()
- printfn "Trying add route to %s" pcIp
- insertRoute.Start() |> ignore
- Console.ReadKey() |> ignore
Вот не знаю. Я скриптецы раз в 100 лет пишу, никак не могу понять, говно ли это? И как такое вообще сделать на питоне? Наверное же можно сделать, просто я экосистему дотнетов гораздо лучше знаю, потому догадывался, что смогу сделать за примелемое время. Время и впрям примелмое (ну минут 20 потратил), но результат как-то ниже моих ожиданий. Вроде F# краток и лаконичен, а тут такого наворотил. Либо эфшарп не торт, либо я криворук, либо же дело как раз в ШИНДОВС инфраструктуре, за которую всякие там любят ее материть. Еще я про PowerShell думал, да я его тоже не знаю. А стоит ли его учить, кто знает? Пригодится где?
PS: Забыл сказать, что при обычном запуске на Win7 оно ругается, что недостаточно прав доступа. Это нормально, ничего криминального. Но вот в дотнете, я например могу сделать:
а) чтобы оно само запрашивало права администратора
б) чтобы имея сохраненные данные админской учтеки (ОЛОЛО БЕЗОПАСТНОСТЬ) запускалось от админа.
Питон или руби какие так могут?
(no subject)
Date: 2012-02-25 08:57 pm (UTC)