Why did I created it?
• We have a lot of tools that support IT
automation, such as chef, ansible, capistrano,
• 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.
• Execute remote command in parallel
• Remember sudo pass ﬁrst, never ask again
• You may specify a local script ﬁle
• Append host and time to each output line
• Sane signal handling
• a) Built on top of Net::OpenSSH
• b) Using its own event loop
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ﬁg 😎
• It multiplexes SSH connections.
• It provides sophisticated I/F for SSH operation,
including I/F for event oriented programming.
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
• SSH: connected, ﬁnished-command, disconnected
• IO: readable
• Process: ﬁnished
• Signals: catched
Try it now!
› cpm install -g App::RemoteCommand