Failų įkėlimo scenarijus į file.io naudojant Bash ir cURL

 



Šiame įraše apžvelgsiu paprastą Bash scenarijų, kuris leidžia patogiai įkelti failus į “file.io“ platformą. Scenarijus naudoja cURL įrankį failo siuntimui ir jq įrankį JSON atsakymui apdoroti.

bash
#!/usr/bin/env bash # Funkcija patikrinti interneto ryšį pingindama google.com checkInternet() { if ! ping -c 1 google.com &> /dev/null; then echo "Klaida: Nepavyko prisijungti prie interneto." return 1 fi } # Funkcija įkelti failą su eigos juosta uploadFile() { local localPath=$1 # Pakeisti neleistinus simbolius failo pavadinime pabraukimo brūkšniais fileName=$(basename "$localPath" | sed 's/[^a-zA-Z0-9._-]/_/g') # Patikrinti, ar failas egzistuoja if [ ! -f "$localPath" ]; then echo "Klaida: Failas nerastas - $localPath" return 1 fi # Patikrinti interneto ryšį if ! checkInternet; then return 1 fi # Gauti failo dydį fileSize=$(stat -c%s "$localPath") # Pradėti rodyti eigos juostą printf "Įkeliamas failas: $fileName " while :; do printf "\e[1;32m.\e[0m" sleep 1 done & # Įkelti failą response=$(curl -s -F "file=@$localPath" https://file.io/) # Patikrinti, ar įkėlimas pavyko if [ $? -ne 0 ] || ! echo "$response" | grep -q '"success":true'; then echo "Klaida: Įkėlimas nepavyko" return 1 fi # Gauti failo URL iš atsakymo fileURL=$(echo "$response" | jq -r '.link') # Rodyti sėkmės pranešimą echo "Failas sėkmingai įkeltas." echo "Nuoroda: $fileURL" echo "DĖMESIO: Failas bus ištrintas po pirmo parsisiuntimo!" # Išsaugoti įkėlimo istoriją echo "$(date '+%Y-%m-%d %H:%M:%S') - $fileName - $fileURL" >> "$HOME/.file_upload_history" # Sustabdyti eigos juostos rodymą kill $! wait $! 2>/dev/null printf "\n" } # Funkcija rodyti įkėlimų istoriją displayHistory() { if [ ! -f "$HOME/.file_upload_history" ]; then echo "Įkėlimų istorija tuščia." else echo "Įkėlimų istorija:" cat "$HOME/.file_upload_history" fi } # Funkcija iškart parodyti įkėlimų istoriją showImmediateHistory() { displayHistory exit 0 } # Pagrindinė funkcija main() { if [ $# -ne 1 ]; then echo "Naudojimas: $0 " echo "Pavyzdys: $0 ~/documents/file.txt" exit 1 fi # Patikrinti, ar argumentas yra rodyti istoriją if [ "$1" == "--history" ]; then showImmediateHistory fi # Įkelti failą uploadFile "$1" } # Iškviesti pagrindinę funkciją main "$@"

Scenarijaus veikimas

  1. Failo tikrinimas: Scenarijus pirmiausia patikrina, ar perduotas failas egzistuoja. Jei ne, spausdinamas klaidos pranešimas ir scenarijus nutraukiamas.
  2. Failo įkėlimas: Naudojant cURL įrankį, failas siunčiamas į “file.io“ naudodamas “POST“ užklausą su “file“ lauku, kuriame nurodytas failo kelias.
  3. Atsakymo apdorojimas: cURL grąžina JSON atsakymą, kurį scenarijus apdoroja naudojant jq įrankį. Tikrinamas, ar atsakyme yra “success“:true“ raktas, kuris rodo sėkmingą įkėlimą. Jei ne, spausdinamas klaidos pranešimas ir scenarijus nutraukiamas.
  4. Nuorodos ištraukimas: Jei įkėlimas sėkmingas, iš JSON atsakymo ištraukiamas failo nuoroda naudojant jq įrankį.
  5. Informacijos spausdinimas: Scenarijus spausdina pranešimus, patvirtinančius sėkmingą įkėlimą ir pateikiančius failo nuorodą. Taip pat pateikiama pastaba, kad failas bus ištrintas po pirmo parsisiuntimo.

Naudojimas

Norėdami naudoti scenarijų, išsaugokite jį kaip failą su .sh plėtiniu ir suteikite jam vykdomojo failo teises. Tada paleiskite scenarijų, nurodydami įkeliamo failo kelią kaip argumentą. Pavyzdžiui:

javascript
./uploadFile ~/dokumentai/failas.txt
Jei norite peržiūrėti įkėlimų istoriją, paleiskite scenarijų su --history argumentu:
bash
./uploadFile --history

Pranašumai

  • Paprastas naudoti
  • Nereikalauja papildomų programų diegimo
  • Leidžia greitai įkelti failus į “file.io“
  • Pateikia failo nuorodą ir informaciją apie laikino saugojimo trukmę

Apribojimai

  • Failas bus ištrintas po pirmo parsisiuntimo
  • Scenarijus nepalaiko didelių failų (iki 2GB) ar kelių failų vienu metu įkėlimo

Išvada

Šis paprastas Bash scenarijus yra puikus įrankis greitai ir lengvai įkelti failus į “file.io“. Jis lengvai naudojamas ir nereikalauja papildomų programų diegimo.

Komentarai

Populiarūs šio tinklaraščio įrašai

Configuring a NixOS firewall for everyday use

Setting up syncthing as a service on openSUSE and other Linux distributions

Monitoring SFTP server updates with Python