oshi.at uploader (μblog)

26.07.2023 | 15:52 | Richard | Richard

Oshi.at, transfer.sh či 0x0.st sú užitočné služby na dočasné uloženie veľkých súborov. V μblogu si ukážeme, ako na oshi.at nahrať súbor z prostredia príkazového riadku a pomocou eLisp-u.

Opis

Služby opísané v perexe veľa ľudí pozná. Transfer.sh a aj 0x0.st sú známejšie. Služba oshi.at je menej známa, ale určite nemenej zaujímavá.
Ako bolo naznačené, slúži na nahratie súboru, ktorý môže byť na serveri max. 90 dní a po nahratí stačí niekomu poslať vygenerovaný link, napríklad emailom. 0x0.st robí to isté, ale tam je počet dní expirácie nepriamo úmerný veľkosti súboru.
Niečo podobné robila ukončená služba od Mozilly, volala sa tuším Send (?), a samozrejme existujú služby ako WeTransfer, či Úschovňa. Posledne menované majú jeden veľký neduh - pri nahrávaní súborov je potrebné zadávanie emailových adries, či nebodaj registrácia a nejde na nich nahrávať z pohodlia príkazového riadku.

Oshi.at voľakde tvrdí, že:

 

Ako nahrať súbor z bashu?

Na linku https://oshi.at/cmd je niekoľko príkladov, ako to spraviť, rôznymi metódami. Je to opisné a myslím, že to netreba viac komentovať.

Jedine to šikovne zaobaliť do nejakého skriptu alebo aliasu. Ja som to spravil nasledovne (bash guru-ovia prosím odpustia, ale nepíšem (už) skoro vôbec skripty v bashi 😏).

#!/bin/bash

echo
echo "▬▮ oshi.at using cURL ▮▬"

if [ $# -lt 2 ]; then
    echo 1>&2 "$0: not enough arguments"
    echo "It must be: oshi.sh <filename> <expiration days>"
    exit 2
elif [ $# -gt 2 ]; then
    echo 1>&2 "$0: too many arguments"
    echo "It must be: oshi.sh <filename> <expiration days>"
    exit 2
fi

echo -n "Using cURL located in: "
which curl
if [ $? -gt 0 ]; then
    echo 1>&2 "! cURL package not installed in the system !"
    exit 2
fi

echo -n "Using stat located in: "
which stat
if [ $? -gt 0 ]; then
    echo 1>&2 "! stat is missing, I won't check the file size !"
else
    if [ `stat -c%s $1` -gt 5000000000 ]; then
        echo 1>&2 "! Your file is too big (more than 5000 MB) !"
        exit 2
    fi
fi

echo -n "Expire in days: "
echo $2
let minutes=$2*24*60
echo "Uploading: "
curl https://oshi.at -F f=@$1 -F expire=$minutes -# | tee /dev/null 

 

A ako z Emacsu?

 

No samozrejme zavolaním skriptu z shellu alebo eshellu. Ale zdalo sa mi elegantnejšie napísať si na to funkciu:

(defun upload-file-oshi-at (file-path)
"Uploads a file to oshi.at using async-shell-command; asking for filename and expiration time (in days)"
(interactive "FEnter file (max. ~5 GB): ")  
(let* ((expire-time (read-number "Enter expiration time (days): "))
       (exp-time-days (* 1440 expire-time))
       (upload-command (format "curl https://oshi.at -F f=@%s -F expire=%s " file-path exp-time-days))
       (output-buffer-name "*Oshi.at Upload Result*"))
  (generate-new-buffer output-buffer-name)
  (switch-to-buffer output-buffer-name)
  (async-shell-command upload-command (current-buffer))
  (insert "\nUploading, please wait…")
  (insert "\ncURL command: " upload-command)
  (read-only-mode)
  ))

Využitím async-shell-command dosiahneme, že počas nahrávania nie je Emacs blokovaný. Nakoniec, ako je to asi čitateľné aj z kódu, tak v bufferi Oshi.at Upload Result máme vygenerované linky na spravovanie a stiahnutie súboru.


Pár obrázkov na záver:









Zas a znova (…pamätníci doplnia…) sa ukazuje, ako efektívne je používanie príkazového riadku. Alebo - ak sa šikovný skript nejako integruje napr. i do správcu súborov.

    • RE: oshi.at uploader (μblog) 26.07.2023 | 20:19
      Avatar Livan Manjaro s XFCE  Používateľ

      Dík za upozornenie na zaujímavú službu. Len akosi nechápem, prečo to používať cez bash, keď interaktívne použitie tejto služby je tak pohodlné. Ak pominiem fakt, že to cez bash nie každý dá, nechápem v čom spočíva výhoda ísť na to cez bash.

      • RE: oshi.at uploader (μblog) 26.07.2023 | 22:09
        Avatar bluesundown   Používateľ
        1. vies tam dat viac suborov v cykle.
        2. vies tam dat subory zo servvera bez DE
        3. automatizacia
        • RE: oshi.at uploader (μblog) 27.07.2023 | 07:29
          Avatar Livan Manjaro s XFCE  Používateľ

          Tak, v prípade, že tam ideš súkať veľa súborov v cykle, tak by to mohlo mať zmysel, aj keď neviem, kde je tá hranica, kedy sa mi to oplatí. Či pri 10 súboroch alebo 100, aby písanie a odlaďovanie toho scriptu nebolo dlhšie, než cez interaktívny prístup. Súkať tam súbory zo servera bez DE je asi jediné naozaj zmysluplné použitie, avšak zrovna servery asi nie sú tou cieľovou platformou pre túto službu, to skôr jednotliví užívatelia. A ta posledná možnosť mi pripadá iba z ríše teoretických možností, než reálne využitie. Automatizácia sa používa na opakované rutinné činnosti, čo si v danom prípade iba ťažko viem predstaviť.

          • RE: oshi.at uploader (μblog) 27.07.2023 | 13:49
            Avatar bluesundown   Používateľ

            este mi napadol taky remote http Filesystem :D

          • RE: oshi.at uploader (μblog) 27.07.2023 | 16:03
            Avatar Richard Antix  Používateľ

            Súvisí to aj workflowom. Napr. presne práve teraz som písal mail, a popri tom som s mailom chcel poslať fotky (> 50 MB) nejakého zariadenia.

             

            Preskočil som do buffra so súbormi, zbalil ich, zavolal funkciu a potom, keď sa to nahralo, tak som jednoducho prekopíroval link do mailu. Bolo to veľmi rýchle, bez použitia myši, navyše to kopírovanie linku bolo v zmysle útoku velociraptora (pomocou rozšírenia AVY, bez presunu kurzora do druhého okna či bufferu, raz o tomto poklade napíšem blog) - bez varovania priamo za cieľom!

    • RE: oshi.at uploader (μblog) 27.07.2023 | 16:11
      Avatar bluesundown   Používateľ

      toto je tiez cool: nc -q2 oshi.at 7777 < /path/to/file