Š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.
#!/usr/bin/env bash# Funkcija patikrinti interneto ryšį pingindama google.comcheckInternet() { if ! ping -c 1 google.com &> /dev/null; then echo "Klaida: Nepavyko prisijungti prie interneto." return 1 fi}# Funkcija įkelti failą su eigos juostauploadFile() { 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ė funkcijamain() { if [ $# -ne 1 ]; then echo "Naudojimas: $0 <failo_kelias>" 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
Failo tikrinimas: Scenarijus pirmiausia patikrina, ar perduotas failas egzistuoja. Jei ne, spausdinamas klaidos pranešimas ir scenarijus nutraukiamas.Failo įkėlimas: Naudojant cURL įrankį, failas siunčiamas į “file.io“ naudodamas “POST“ užklausą su “file“ lauku, kuriame nurodytas failo kelias.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.Nuorodos ištraukimas: Jei įkėlimas sėkmingas, iš JSON atsakymo ištraukiamas failo nuoroda naudojant jq įrankį.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:
./uploadFile ~/dokumentai/failas.txt
Jei norite peržiūrėti įkėlimų istoriją, paleiskite scenarijų su --history argumentu:
./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.
https://funkcijos.wordpress.com/2024/06/03/failu-ikelimo-scenarijus-i-file-io-naudojant-bash-ir-curl/
#curl #fileIo #jq