Отправка в twitter последней введённой строчки в терминале


ia аватар

ia - Posted on 17 Ноябрь 2008

Бывает так, что, используя twitter, (если Вы вдруг не знаете, что это такое, то можете проходить мимо; если не знаете, но стало интересно, кликайте сюда) хочется на ответ "what are you doing now" скопипастить ту команду, которая была выполнена в оболочке. Чтобы сделать это стандартными средствами, через браузер, нужно слишком много телодвижений, поэтому это не наш Путь. В связи с этим хочется предложить пользователям twitter'а (ну и заодно операционных систем семейства GNU/Linux) скрипт, выполнение которого отправляет последнюю введённую в терминале команду в Ваш twitter-аккаунт:

> $любимый_текстовый_редактор twitsh

Скопируем строчки:

#!/bin/bash
 
# twitsh - twitting last executed command from shell (c) 2008
 
#запоминаем логин
login="my_twitter_login";
#пароль
password="my_twitter_password";
 
#если Вам не хочется хранить пароль в открытом виде,
#то в качестве альтернативы подойдёт строка:
#read -s -p "Enter twitter password: " password;
#во втором случае каждый раз при выполнении скрипта необходимо будет вводить пароль
 
#файл истории команд от используемого шелла
histfile="/home/user/.zsh_history";
 
#символ приглашения к вводу команд
symbol="> "; #символ приглашения к вводу команд
 
#подсчёт количества строк...
line=`cat "$histfile" | wc -l`;
#...для определения предпоследней введённой команды
#(последней всегда будет запуск данного скрипта)
cmd=`cat "$histfile" | sed -ne $(($line-1))p`;
 
#составление строки для отправки
tweet="$symbol $cmd";
 
#в данном случае, отправка делается через curl
#от Вашего логина данная команда удалённо обновит xml-файл,
#отвечающий за ваши сообщения + избавляемся перенаправлением ненужного вывода в /dev/null
curl -u $login:$password -d status="$tweet" http://twitter.com/statuses/update.xml > /dev/null
 
if [[ "$?" == 0 ]]; then
	#если всё прошло удачно, сообщаем об этом
	echo "Last command has been successfully twitted.";
else
	#если нет - тоже сообщаем
	echo "Error within twitting last command..."
	exit 1;
fi
 
exit 0;

Сохраняем, закрываем, делаем исполняемым:

> chmod a+x twitsh

Проверяем:

> hello from command line!
hello: extra operand: from
Try `hello --help' for more information.
> ./twitsh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   770  100   751    0    19    906     22 --:--:-- --:--:-- --:--:--  1323
Last command has been successfully twitted.
>

Открываем браузер, заходим на свою страницу в твиттере и видим то, что было введено несколько секунд назад.

Несколько замечаний:
1. отправляются не только выполненные команды, а всё, что Вы введёте и после чего нажмёте .
2. от команд вида application && other_application отправляется только первая часть, т.е. application (однако с конвейерами всё хорошо)
3. проблема с русккими буквами - некоторые буквы отображаются другими символами; похоже, twitter не подозревает о существовании юникода.
4. иногда отправка подтормаживает - появление сообщения об успешной публикации порой появляется через 5-10 секунд.

Happy twitting :-)

0
Ваша оценка: Ничего

я думаю, что товарищам линуксоидам будет интересна православый вариант твиттера - джуйк, весь основной функционал которого доступен через джаббер бота.

Замените строку

curl -u $login:$password -d status="$tweet" http://twitter.com/statuses/update.xml > /dev/null

на

purple-remote "jabber:goim?screenname=juick@juick.com&message=$tweet";

Во втором случае, при выполнении ./twitsh при запущенном pidgin'е на juick через juick-акканут в ростере будет отправляться, опять таки, последняя введённая в терминале команда :-)

@stfoo меня опередил. twitter - не актуально. http://juick.com - наш выбор

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.