-
-
Save Oshuma/289567 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# Jabber-SH — SH console via XMPP/Jabber (GTalk) | |
# | |
# Jabber-SH allows you to administrate a remote computer via a command line | |
# through a Jabber client. It’s like SSH via GoogleTalk! :) | |
# This is just a hack but it might be usefull sometime to run basic commands | |
# on a machine that is not accessible via ssh. | |
# | |
# Philippe Creux. pcreux/AT/gmail/DOT/com | |
# Jabber-SH connects to Jabber using the BOT_LOGIN and BOT_PASSWORD details. | |
BOT_LOGIN = "A_JABBER_SH_ACCOUNT@gmail.com" | |
BOT_PASSWORD = "A_JABBER_SH_PASSWORD" | |
# Jabber-SH answers some random epigram via 'fortune' to any message sent to him. | |
# The user CLIENT_LOGIN logs into the console by sending the CLIENT_PASSPHRASE. | |
CLIENT_LOGIN = "YOUR_EVERYDAY_ACCOUNT@gmail.com" | |
CLIENT_PASSPHRASE = "A_PASSPHRASE_TO_LOGIN" | |
require 'rubygems' | |
require 'xmpp4r-simple' | |
require 'session' | |
puts "Connecting" | |
if messenger = Jabber::Simple.new(BOT_LOGIN, BOT_PASSWORD) | |
puts "Connected" | |
else | |
puts "Ooops - Can't connect" | |
end | |
@sh = nil | |
while true | |
messenger.received_messages do |msg| | |
puts "Received #{msg.body} from #{msg.from}" | |
if msg && msg.from.to_s.include?(CLIENT_LOGIN) | |
if msg.body == CLIENT_PASSPHRASE | |
if @sh == nil | |
@sh = Session::new | |
message = "Now logged in!" | |
else | |
@sh.close && @sh = nil | |
message = "Logged out..." | |
end | |
messenger.deliver(msg.from, message) | |
else | |
if @sh | |
stdout, stderr = @sh.execute(msg.body) if msg.body | |
messenger.deliver(msg.from, "\n" + stdout.chomp) unless stdout.empty? | |
messenger.deliver(msg.from, "\n" + stderr.chomp) unless stderr.empty? | |
messenger.deliver(msg.from, @sh.execute('pwd')[0].chomp + "$>") | |
else | |
messenger.deliver(msg.from, `fortune`) | |
end | |
end | |
end | |
end | |
sleep 1 | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment