Mais um blog inútil.

Março 22, 2015

uSched

Filed under: Coding,Linux — thread @ 1:26

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.

2 comentários a “uSched”

  1. Rui Cruz diz:

    Olá. Tenho uma pergunta. O transporte para a funcionalidade client/server é SEGURO?

    ps: nao digam ao juiz que vim à internet

  2. thread diz:

    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.

Comentar

widgeon
widgeon
widgeon
widgeon