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.



Published on

2018.02.09 kichijojipm 13

Published in: Technology
  • Be the first to comment


  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
  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