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.
#!/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
- 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
--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.
Komentarai
Rašyti komentarą