Created
December 17, 2009 06:17
-
-
Save pcreux/258561 to your computer and use it in GitHub Desktop.
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! :)
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 = "[email protected]" | |
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 = "[email protected]" | |
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 |
Crazy, but interesting ;-)
Interesting, but crazy ;-)
Crazy, but it might just work.
Mosh doesn't work for me. :( Hopefully this does some good.
This works perfectly for me.
Thank you very much.
I use this to start revert SSH and work behind NAT like a boss.
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
Interesting, but crazy ;-)