Пользователь
0,0
рейтинг
26 января 2009 в 03:12

Администрирование → Bash и Twitter

image
Развивая уже упомянутую идею постинга в Twitter из линуксового Bash'а: делается все элементарно и просто.
Устанавливаем curl:
$ sudo apt-get install curl

Теперь создаем простой скрипт такого содержания:
#!/bin/bash
curl --basic --user USERNAME:PASSWORD \
--data status="$*" 'http://twitter.com/statuses/update.xml' -o /dev/null;

Соответственно, USERNAME и PASSWORD меняем на наши логин и пароль в твиттере.
Теперь кидаем скрипт куда-нибудь в /usr/local/bin, например, под именем tw, выставляем права:
$ sudo chmod 551 /usr/local/bin/tw
$ sudo chmod +s /usr/local/bin/tw
$ sudo chown root /usr/local/bin/tw

(дабы запускать могли все, а править только рут) — и смело пользуемся!
$ tw "Проверка, как слышно?"
Николай @enchantner
карма
157,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (23)

  • +4
    Автор молодец, а для интересующихся like me подробности о команде curl ( rus-linux.net/MyLDP/internet/curlrus.html )
    rus-linux.net/MyLDP/internet/curlrus.html
    • 0
      очень странно парсер ссылки отобразил.
  • 0
    CURL — это сила!!! спасибо за пост!)
  • +1
    Изящно!
  • +7
    Я-бы не советовал класть сей скрипт в /usr/local/bin, если в системе несколько пользователей, лучше положить куда-нибудь в ~/bin, ведь в скрипте указаны логин и пароль… да, и ещё права выставить лучше 700
  • +4
    А я иногда пишу в тви из vim, с помощью плагина twitvim. Там же можно просматривать и таймлайн, и реплаи, постить строку из буффера или весь буффер полностью.
  • +1
    Вот к Хабру прикрутить такое: постить и получать фидбэк.
  • –3
    прикольна))
  • +3
    Добавляем проверку на 140 символов:
    len=`echo "$*" | wc -c`
    if [ $len -gt  140 ]; then
            echo "Too much"
            exit 1
    fi
    

    • 0
      Или так

      len=`echo "$*" | wc -c`

      if [ $len -gt 140 ]; then
      s=«Too much»
      `notify-send «Twitter» "$s"`
      exit 1
      fi
  • +1
    В API к Twitter есть некоторые команды с curl: apiwiki.twitter.com/REST+API+Documentation
  • 0
    А какая кодировка должна быть при отправке? Если системная локаль UTF-8 — русские буквы не отображаются нормально.
    • 0
      У меня и с русским все работает нормально, локаль UTF-8, Ubuntu 8.10.
  • 0
    Есть одна проблема в скрипте, при добавлении записи у которой в конце восклицательный знак, скрипт не хочет работать
    • 0
      Лучше использовать одинарные кавычки вместо двойных.
      • 0
        Или временно выключить histexpand командой set +H
    • 0
      экранируйте его слэшем — вот так\!
      • 0
        в данном случае этот способ не подходит
  • +1
    А можно сделать так:

    #!/bin/bash
    len=`echo $3 | wc -c`
    if [ $len -gt 140 ]; then
    echo "Too much"
    exit 1
    fi

    curl --basic --user $1:$2 \
    --data status=$3 'http://twitter.com/statuses/update.xml' -o /dev/null;


    Кидаем скрипт куда-нибудь в /usr/local/bin и запускаем вот так:

    $ tw user pass 'Тест'
  • +1
    Лучше сделать вот так, тогда скрипт для всех подойдет и не надо каждый раз набирать логин/пасс
    #!/bin/bash

    FILE="$HOME/.twitter"

    if [! -f $FILE ]; then
    echo "$FILE: does not exists."
    echo «Please create this file with following contents:»
    echo "[login]"
    echo "[pass]"
    echo «Where [login] and [pass] is your twitter login/password.»
    echo «Make sure you DO NOT have an empty line in the end of file and/or spaces at start/end of the lines or authentication may fail.»
    exit 1
    elif [! -r $FILE ]; then
    echo "$FILE: can not be read"
    exit 2
    fi

    if [ `stat -c %a $FILE` -ne 600 ]; then
    echo «WARNING: file chmod is not safe! Will try to fix.»
    exec chmod 0600 $FILE
    fi

    LOGIN=`head -n 1 $FILE` # quick'n'dirty =)
    PASSWORD=`tail -n 1 $FILE`

    MSG="$*"

    MSGLEN=`echo $3 | wc -c`
    if [ $MSGLEN -gt 140 ]; then
    echo «Too much text»
    exit 3
    fi

    curl --basic --user $LOGIN:$PASSWORD \
    --data status=$MSG 'http://twitter.com/statuses/update.xml' -o /dev/null;
  • 0
    Небольшая поправочка:
    MSGLEN=`echo $MSG | wc -c`
  • 0
    Люди добрые, объясните, почему строчка
    curl --basic --user twitteruser:123456789 \ --data status=«test post» 'http://twitter.com/statuses/update.xml' -o /dev/null;
    мгновенно отправляет пост в твиттер а вышеприведенный скрипт с учтённой правкой выделывается.

    # ./tw.sh test post
    curl: (6) Couldn't resolve host ' --data'
    curl: (6) Couldn't resolve host 'status=test'
    <?xml version=«1.0» encoding=«UTF-8»?>
    /statuses/update.xml
    This method requires a POST.


    еще и думает около минуты…

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.