Viskas, ko reikia jūsų sistemai viename scenarijuje. bashrc funkcija

 Šiandien mano scenarijų pristato ir komentuoja GPT-4o

Automatizacija yra vienas iš kertinių IT specialistų įgūdžių, leidžiantis padaryti daugiau su mažiau pastangų. Šiame straipsnyje aptarsime vieną galingą bash scenarijų, kuris sujungia kelias svarbias užduotis į vieną, taip palengvinant kasdienį darbą. Pažiūrėkime, ką ši funkcija daro, kodėl ji yra naudinga ir ką dar būtų galima patobulinti.

Funkcijos apžvalga

Ši bash funkcija, pavadinta viskas(), yra skirta automatizuoti kelias dažnai atliekamas užduotis vienu metu. Štai ką ji daro:

  1. Orų prognozės išvedimas į failą:

	
./o.sh > "$HOME/Obsidian/notes/Oras.md" 2>/dev/null &

Orų prognozė išvedama į failą foniniu režimu.

Failų išskirstymas iš “Atsiuntimai“ katalogo:


if ! ~/git/md.sh; then
    return 2
fi
echo -e "OS: $(lsb_release -ds)" echo -e "Kernel: $(uname -r)" echo -e "Uptime: $(uptime -p)"

Čia scenarijus iškviečia kitą scenarijų, kuris išskirsto failus iš “Atsiuntimai“ katalogo.

Obsidian katalogo sinchronizavimas su git:


cd "$HOME/Obsidian"
git add .
git commit -m "Obsidian sync $(date +%Y-%m-%d_%H:%M:%S)"
git push origin main
cd "$HOME"

Ši dalis sinchronizuoja Obsidian katalogo pakeitimus su nuotoline saugykla.

gitbash.sh scenarijaus paleidimas:


if [ -f "$gitbash_script" ]; then
    bash "$gitbash_script"
fi

Paleidžiamas gitbash.sh scenarijus.

Sistemos paketų atnaujinimas:


sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo flatpak update -y
sudo flatpak upgrade -y

Atlieka apt ir flatpak paketų atnaujinimus.

fastfetch atnaujinimas:


./fastfetch_update.sh

Patikrina ir atnaujina fastfetch įrankį.

Sistemos informacijos išvedimas:


echo -e "OS: $(lsb_release -ds)"
echo -e "Kernel: $(uname -r)"
echo -e "Uptime: $(uptime -p)"

Išveda pagrindinę sistemos informaciją.

Ką dar būtų galima pridėti ar patobulinti?

Nors funkcija viskas() yra labai naudinga, visada galima ją patobulinti:

  1. Klaidų valdymas:
    • Šiuo metu klaidų valdymas yra ribotas. Būtų naudinga pridėti detalesnį klaidų pranešimą ir žurnalų kaupimą, kad būtų lengviau identifikuoti ir ištaisyti problemas.
  2. Konfigūracijos failas:
    • Vietoj kietai užkoduotų kelių (pvz., $HOME/Obsidian), būtų naudinga turėti konfigūracijos failą, iš kurio būtų skaitomi keliai ir kiti nustatymai. Tai padarytų scenarijų labiau pritaikomą.
  3. Paralelinis vykdymas:
    • Kai kurie veiksmai galėtų būti vykdomi paraleliai, kad sutrumpėtų bendras scenarijaus vykdymo laikas.
  4. Detalus progreso sekimas:
    • Pridėti daugiau išvesties, nurodančios, kiek procentų užduoties atlikta arba kokioje stadijoje šiuo metu yra procesas.

Kam tokia funkcija gali būti naudinga?

Ši funkcija yra ypač naudinga sistemų administratoriams ir programuotojams, kurie nori automatizuoti kasdienes užduotis ir sutaupyti laiko. Ji padeda užtikrinti, kad visos svarbios sistemos dalys būtų nuolat atnaujinamos ir sinchronizuojamos. Be to, tokia funkcija gali būti naudinga bet kam, kas nori palaikyti savo darbo aplinką tvarkingą ir efektyvią.

Išvada

Automatizuoti scenarijai, tokie kaip viskas(), yra neatsiejama profesionalių IT specialistų darbo dalis. Jie ne tik taupo laiką, bet ir padidina darbo efektyvumą bei sumažina klaidų tikimybę. Tobulinant ir pritaikant šiuos scenarijus pagal savo poreikius, galima dar labiau padidinti jų naudingumą ir pritaikomumą.

 


#!/usr/bin/env bash
 
# Spalvų nustatymai
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
 
function viskas() {
    # 1. Išvesti orų prognozę į failą (foniniu procesu)
    echo -e "${CYAN}Išvedama orų prognozė į failą $HOME/Obsidian/notes/Oras.md${NC}"
    ./o.sh > "$HOME/Obsidian/notes/Oras.md" 2>/dev/null &
    orai_pid=$!
 
    # 2. Išskirstyti failus iš Atsiuntimai katalogo
    echo -e "${CYAN}Išskirstomi failai iš Atsiuntimai katalogo${NC}"
    if ! ~/git/md.sh; then
        echo -e "${RED}Nepavyko išskirstyti failų iš Atsiuntimai katalogo${NC}"
        return 2
    fi
 
    # 3. Sinchronizuoti Obsidian katalogą su git
    echo -e "${CYAN}Sinchronizuojamas Obsidian katalogas su git${NC}"
    cd "$HOME/Obsidian" || return 3
    git status
    git add .
    if git commit -m "Obsidian sync $(date +%Y-%m-%d_%H:%M:%S)"; then
        echo -e "${GREEN}Git commit sukurtas sėkmingai${NC}"
    else
        echo -e "${YELLOW}Nėra pakeitimų git'e${NC}"
    fi
    if git push origin main; then
        echo -e "${GREEN}Git commit išsiųstas į nuotolinį saugyklą${NC}"
    else
        echo -e "${RED}Nepavyko išsiųsti git commit į nuotolinį saugyklą${NC}"
    fi
    cd "$HOME" || return 4
 
    # 4. Paleisti gitbash.sh
    gitbash_script="$HOME/git/gitbash.sh"
    if [ -f "$gitbash_script" ]; then
        echo -e "${CYAN}Paleidžiamas $gitbash_script${NC}"
        if bash "$gitbash_script"; then
            echo -e "${GREEN}$gitbash_script paleistas sėkmingai${NC}"
        else
            echo -e "${RED}Nepavyko paleisti $gitbash_script${NC}"
            return 5
        fi
    else
        echo -e "${YELLOW}Scenarijaus failas $gitbash_script nerastas${NC}"
    fi
 
    # 5. Atnaujinti sistemos paketus
    echo -e "${CYAN}Atnaujinami sistemos paketai${NC}"
    if sudo apt update; then
        echo -e "${GREEN}Apt paketų sąrašas atnaujintas sėkmingai${NC}"
    else
        echo -e "${RED}Nepavyko atnaujinti apt paketų sąrašo${NC}"
        return 6
    fi
    echo -e "${CYAN}Įdiegiami naujausi paketai${NC}"
    if sudo apt full-upgrade -y; then
        echo -e "${GREEN}Apt paketai atnaujinti sėkmingai${NC}"
    else
        echo -e "${RED}Nepavyko atnaujinti apt paketų${NC}"
        return 7
    fi
    echo -e "${CYAN}Šalinami nereikalingi paketai${NC}"
    if sudo apt autoremove -y; then
        echo -e "${GREEN}Nereikalingi apt paketai pašalinti sėkmingai${NC}"
    else
        echo -e "${RED}Nepavyko pašalinti nereikalingų apt paketų${NC}"
        return 8
    fi
    echo -e "${CYAN}Atnaujinami flatpak paketai${NC}"
    if sudo flatpak update -y; then
        echo -e "${GREEN}Flatpak paketų sąrašas atnaujintas sėkmingai${NC}"
    else
        echo -e "${RED}Nepavyko atnaujinti flatpak paketų sąrašo${NC}"
        return 9
    fi
    if sudo flatpak upgrade -y; then
        echo -e "${GREEN}Flatpak paketai atnaujinti sėkmingai${NC}"
    else
        echo -e "${RED}Nepavyko atnaujinti flatpak paketų${NC}"
        return 10
    fi
 
    # 6. Patikrinti ir atnaujinti fastfetch, jei reikia
    echo -e "${CYAN}Tikrinama ir atnaujinama fastfetch${NC}"
    if ./fastfetch_update.sh; then
        echo -e "${GREEN}Fastfetch atnaujintas sėkmingai${NC}"
    else
        echo -e "${RED}Nepavyko atnaujinti fastfetch${NC}"
        return 11
    fi
 
    # Palaukti, kol pirmasis veiksmas bus baigtas
    echo -e "${YELLOW}Laukiama, kol orų programėlė atsinaujins...${NC}"
    wait $orai_pid || echo -e "${RED}Nepavyko išvesti orų prognozės į failą $HOME/Obsidian/notes/Oras.md${NC}"
    echo -e "${GREEN}Orų prognozė išsiųsta į Obsidian!${NC}\n"
 
     # Sistemos informacija
    echo -e "\n${MAGENTA}-------------------${NC}"
    echo -e "${CYAN}Sistemos informacija:${NC}"
    echo -e "${YELLOW}OS: $(lsb_release -ds)${NC}"
    echo -e "${YELLOW}Instaliavimo data: $(stat -c %w / | cut -b 1-16)${NC}"
    echo -e "${YELLOW}Kernel: $(uname -r)${NC}"
    echo -e "${YELLOW}Uptime: $(uptime -p)${NC}"
    echo -e "${YELLOW}Packages: $(dpkg --get-selections | grep -v deinstall | wc -l) (dpkg), $(flatpak list | wc -l) (flatpak)${NC}"
    echo -e "${YELLOW}DE: $(echo $XDG_CURRENT_DESKTOP)${NC}"
    echo -e "${YELLOW}RAM: $(free -h | awk '/^Mem:/ {print $3 "/" $2}')${NC}"
    echo -e "${YELLOW}Disk (/): $(df -h / | awk '/\// {print $2, $3, $4, $5}')${NC}"
    echo -e "${YELLOW}Disk MSD: $(df -h /media/vaidotak/1f3e2462-ef6f-47a1-a3f8-9300d4bec261 | awk '/\/media\/vaidotak\/1f3e2462-ef6f-47a1-a3f8-9300d4bec261/ {print $2, $3, $4, $5}')${NC}"
    echo -e "${YELLOW}Baterija: $(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | awk '/percentage/ {print $2}')${NC}"
}

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