Как использовать pastebin из скрипта оболочки? - PullRequest
21 голосов
/ 25 октября 2010

Возможно ли использовать pastebin (может быть через их функциональность "API" ) внутри сценариев оболочки bash? Как мне отправить http-пост? Как мне вернуть URL?

Ответы [ 5 ]

10 голосов
/ 10 июня 2014

Когда pastebin.com закрыл свои публичные API, я искал альтернативы.

Sprunge (http://github.com/rupa/sprunge) отлично. Использование:

<command> | curl -F 'sprunge=<-' http://sprunge.us

или, как я использую:

alias paste="curl -F 'sprunge=<-' http://sprunge.us"
<command> | paste
6 голосов
/ 13 декабря 2010

В документации говорится, что вам необходимо отправить запрос POST на

http://pastebin.com/api_public.php

и единственным обязательным параметром является paste_code, тип строки - это вставка, которую вы хотите сделать.

В случае успеха будет возвращен новый pastebin URL.

Вы можете легко сделать это из оболочки bash, используя команду curl.

curl использует опцию -d для отправки данных POST на указанный URL-адрес.

Демо-версия:

Эта демонстрация создаст новую вставку с кодом:

printf("Hello..I am Codaddict");

Из вашей оболочки:

$ curl -d 'paste_code=printf("Hello..I am Codaddict");' 'http://pastebin.com/api_public.php'
http://pastebin.com/598VLDZp
$

Теперь, если вы увидите URL http://pastebin.com/598VLDZp,, вы увидите мою пасту:)

В качестве альтернативы вы можете сделать это с помощью команды wget, которая использует опцию --post-data для отправки POST значений.

Я пробовал эту команду, она отлично работает:

wget --post-data 'paste_code=printf("Hello..I am Codaddict");' 'http://pastebin.com/api_public.php'
4 голосов
/ 10 июня 2014

Поместите в ваш .bashrc следующее:

sprunge() {
  if [[ $1 ]]; then
    curl -F 'sprunge=<-' "http://sprunge.us" <"$1"
  else
    curl -F 'sprunge=<-' "http://sprunge.us"
  fi
}

... и тогда вы сможете запустить:

sprunge filename # post file to sprunge

... или ...

some_command | sprunge # pipe output to sprunge
1 голос
/ 11 июля 2018

Два других ответа (начиная с 2014 года) указывают на http://sprunge.us,, который предназначен для использования таким образом ...

curl --form 'sprunge=@yourfile.txt' sprunge.us

Однако, начиная с 2018 года, sprunge.us имеетсклонность к перегрузке и возвращению 500 Internal Server Error для каждого запроса.Для файлов размером не менее 300 КБ, но не выше 2,8 МБ, мне повезло с очень похожим сервисом: http://ix.io:

curl --form 'f:1=@yourfile.txt' ix.io

Для файлов размером не менее 2,8 МБ (и, возможно,выше, я не знаю), я нашел более отполированный https://transfer.sh. Он рекомендует немного другую и более простую командную строку, а требует https (это не будет работатьбез него):

curl --upload-file yourfile.txt https://transfer.sh
0 голосов
/ 11 мая 2018

API для публикации в pastebin изменился после публикации codaddict.
Подробности можно найти по этой ссылке: https://pastebin.com/api

Пример: curl -d 'api_paste_code=printf("Hello..\n I am Codaddict");' \ -d 'api_dev_key=<get_your_own>' \ -d 'api_option=paste' 'http://pastebin.com/api/api_post.php'

Естьтри обязательных поля на данный момент:
api_dev_key -> Вам необходимо создать логин на pastebin.com, чтобы получить этот
api_option -> формат для публикации
api_paste_code -> Текст, который вы хотите опубликовать

...