Create a gist now

Instantly share code, notes, and snippets.

Jabber-SH — SH console via XMPP/Jabber (GTalk) Jabber-SH allows to you to administrate a remote computer via a command line through a Jabber client. It’s like SSH via GoogleTalk! :)
#!/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
@lzap
lzap commented Dec 31, 2012

Interesting, but crazy ;-)

@AloisMahdal

Crazy, but interesting ;-)

@liamsmithuk

Interesting, but crazy ;-)

@BurritoBazooka

Crazy, but it might just work.

Mosh doesn't work for me. :( Hopefully this does some good.

@spicydog

This works perfectly for me.
Thank you very much.
I use this to start revert SSH and work behind NAT like a boss.

@mstbone67a

it works.
for raspbmc
sudo apt-get install ruby1.8 rubygems bundler
cd robotito-master
bundle install
./jabbershd run (to see it connect)
One note you must set the google account to accept less secure apps.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment