Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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

This comment has been minimized.

Show comment
Hide comment
@lzap

lzap Dec 31, 2012

Interesting, but crazy ;-)

lzap commented Dec 31, 2012

Interesting, but crazy ;-)

@AloisMahdal

This comment has been minimized.

Show comment
Hide comment
@AloisMahdal

AloisMahdal Apr 3, 2013

Crazy, but interesting ;-)

Crazy, but interesting ;-)

@liamsmithuk

This comment has been minimized.

Show comment
Hide comment
@liamsmithuk

liamsmithuk Jun 19, 2013

Interesting, but crazy ;-)

Interesting, but crazy ;-)

@BurritoBazooka

This comment has been minimized.

Show comment
Hide comment
@BurritoBazooka

BurritoBazooka Jul 23, 2013

Crazy, but it might just work.

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

Crazy, but it might just work.

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

@spicydog

This comment has been minimized.

Show comment
Hide comment
@spicydog

spicydog Dec 23, 2014

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

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

@mstbone67a

This comment has been minimized.

Show comment
Hide comment
@mstbone67a

mstbone67a Feb 25, 2015

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.

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