Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

App::RemoteCommand

2,505 views

Published on

2018.02.09 kichijojipm 13

Published in: Technology
  • Be the first to comment

App::RemoteCommand

  1. 1. App::RemoteCommand 2018.02.09 Shoichi Kaji
  2. 2. Me • Shoichi Kaji • github/PAUSE: skaji • Perl5: cpm • Perl6: mi6
  3. 3. Contents • What is App::RemoteCommand? • Why did I create it? • Features • DEMO • Internals
  4. 4. What is App::RemoteCommand?
  5. 5. A simple remote command launcher via SSH
  6. 6. Why did I created it? • We have a lot of tools that support IT automation, such as chef, ansible, capistrano, fabric, … • OTOH, we sometimes want to do ad hoc operation. Then such IT-automation tools are obtrusive. But ssh(1) is powerless. • So I created App::RemoteCommand, which is simple, and at the same time, powerful.
  7. 7. Features • Execute remote command in parallel • Remember sudo pass first, never ask again • You may specify a local script file • Append host and time to each output line • Sane signal handling
  8. 8. DEMO https://asciinema.org/a/119109
  9. 9. Internals • a) Built on top of Net::OpenSSH • b) Using its own event loop
  10. 10. Built on top of Net::OpenSSH • Net::OpenSSH is a wrapper around ssh(1), created by  Salvador Fandiño. • Because it is a wrapper for ssh(1),
 it can use the complicated ~/.ssh/config 😎 • It multiplexes SSH connections. • It provides sophisticated I/F for SSH operation, including I/F for event oriented programming.
  11. 11. Using its own event loop • Thanks to Net::OpenSSH, we can easily write an application working with SSH in event oriented programming. • In fact, App::RemoteCommand uses its own event loop; it watches: • SSH: connected, finished-command, disconnected • IO: readable • Process: finished • Signals: catched
  12. 12. Try it now! › cpm install -g App::RemoteCommand

×