Upgrade to Pro — share decks privately, control downloads, hide ads and more …

App::RemoteCommand 2018

Shoichi Kaji
February 09, 2018
22

App::RemoteCommand 2018

2018.02.09 kichijojipm 13
(original https://www.slideshare.net/skaji/appremotecommand)

Shoichi Kaji

February 09, 2018
Tweet

Transcript

  1. Contents • What is App::RemoteCommand? • Why did I create

    it? • Features • DEMO • Internals
  2. 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.
  3. Features • Execute remote command in parallel • Remember sudo

    pass fi rst, never ask again • You may specify a local script fi le • Append host and time to each output line • Sane signal handling
  4. 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/con fi g 😎 • It multiplexes SSH connections. • It provides sophisticated I/F for SSH operation, including I/F for event oriented programming.
  5. 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, fi nished-command, disconnected • IO: readable • Process: fi nished • Signals: catched