uSched
Caros blolistas,
Venho aqui apresentar uma inutilidade que recentemente saiu da pasta Lixo/ para o GitHub e que tem sofrido desde então alguns commits que tentam tornar a coisa um pouco mais útil, dentro dos limites da inutilidade.
Falo-vos do uSched: http://www.usched.org
Para quem não tem acompanhado o #C da PTnet e se deparar com tal coisa, a tendencia será fazer scroll de cima abaixo no site e fechar assim que o footer é atingido... No entanto, venho chamar a vossa atenção para algumas coisas em que isto "até pode dar jeito".
A ideia não é substituir o 'cron', nem mesmo o 'at', mas sim ter uma ferramenta que permita agendar a execução de comandos via command-line, ou integrar tais agendamentos noutras aplicações que necessitem de o fazer por as mais variadissimas razões, já que o uSched nos oferece uma serie de bindings para as mais variadas linguagens que por aí andam (excepto Perl... Ruby... por favor... :P... vá... serão suportadas em breve também, não comecem já a chorar).
Indo agora de encontro a alguns exemplos práticos, imaginem que se pretende obter raw data de partições de 30 em 30 segundos:
$ usc run 'df >> /tmp/df.out' now then every 30 seconds
Claro está que isto também poderia ser feito com um simples while e um sleep na propria shell... mas envolveria muito mais que isso, pois teria que existir a preocupação de: E se a máquina rebootar? (toca a criar um script pra colocar, por exemplo, no rc.local), E se eu quiser que isto pare em determinada hora ou dia ou ano? Algo que se pode resolver com:
$ usc run 'df >> /tmp/df.out' now then every 30 seconds until to date 2015-04-15
Então e se pretender fazer tal coisa numa máquina remota?
$ usc -H remote.example.com -U username run 'df >> /tmp/df.out' now then every 30 seconds Password: $
E dizem-me voces: "E porque não usar SSH?"
Bom... seria uma boa solução no caso de command-line requests... mas se o uSched não suportasse client/server nativamente, seria um problema quando quisessemos integrar tais pedidos remotos em aplicações que façam uso da sua client library... ou seja:
$usc = new Usched(); $usc->SetHostname("remote.example.com"); $usc->SetPort("7600"); $usc->SetUsername("username"); $usc->SetPassword("password"); $usc->Request("run 'wget http://myapp.com/run_this_every_day.php' on time 01:00:00 then every 1 day");
As opções inúteis são infinitas, até mesmo criar uma avorezinha over time poderia ser uma boa intuilidade. Todos os dias veriamos o crescimento da mesma!
Bom, sem querer extender muito mais este post, recomendo-vos que dêm uma vista de olhos (com olhos de ver) na home page e github do projecto e caso tenham ideias e/ou queiram contribuir com algo, ficarei muito grato.
Saudações a todos.
Olá. Tenho uma pergunta. O transporte para a funcionalidade client/server é SEGURO?
ps: nao digam ao juiz que vim à internet
Viva,
O transporte de dados sensiveis é cifrado. A autenticação é baseada numa variação do EKE com challenge-response. Uma autenticação bem sucedida irá gerar uma shared key a qual será usada para cifrar (ChaCha20+poly1305) os dados sensiveis da transmissão.