Dasturlarni avtomatik o'rnatish uchun script.
Last updated
Last updated
Shunaqa ishlarni qilishdan zerikib dastuchani tuzib quydim.Bir mazza qilaylik endi.
#!/bin/bash
# Linux Dastur O'rnatish Tool'i
# Bu skript turli Linux distributivlari uchun keng qamrovli o'rnatish imkoniyatlarini taqdim etadi.
# Paket menejerlar: apt, dnf, yum, pacman, zypper va boshqalar.
# Qo'llab-quvvatlanadigan formatlar: .deb, .rpm, .tar.gz, .zip, .rar.
# Ranglar sozlamasi
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m' # Rangni tiklash
# Funksiya: Distributsiyani aniqlash
get_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "$ID"
else
echo "unknown"
fi
}
DISTRO=$(get_distro)
# Funksiya: Menyu ko'rsatish
show_menu() {
echo -e "${YELLOW}\nLinux Dastur O'rnatish Tool'iga xush kelibsiz!${NC}"
echo "1) Paket menejeri orqali dastur o'rnatish (.deb/.rpm)"
echo "2) Git orqali dastur yoki plagin yuklash"
echo "3) Arxiv fayldan dastur o'rnatish (.zip, .rar, .tar.gz)"
echo "4) Curl orqali dastur o'rnatish"
echo "5) Chiqish"
read -p "\nTanlovingizni kiriting (1-5): " choice
}
# Funksiya: Paket menejeri orqali dastur o'rnatish
install_from_package_manager() {
read -p "Dastur fayli manzilini kiriting (.deb yoki .rpm): " package_file
case "$DISTRO" in
ubuntu|debian)
if [[ "$package_file" == *.deb ]]; then
echo -e "${GREEN}.deb fayl orqali o'rnatish boshlandi...${NC}"
sudo dpkg -i "$package_file"
sudo apt --fix-broken install -y
else
echo -e "${RED}Noto'g'ri fayl formati. Debian yoki Ubuntu uchun faqat .deb qabul qilinadi.${NC}"
fi
;;
fedora|redhat|centos)
if [[ "$package_file" == *.rpm ]]; then
echo -e "${GREEN}.rpm fayl orqali o'rnatish boshlandi...${NC}"
sudo dnf install "$package_file" -y || sudo yum install "$package_file" -y
else
echo -e "${RED}Noto'g'ri fayl formati. RedHat/Fedora uchun faqat .rpm qabul qilinadi.${NC}"
fi
;;
arch)
echo -e "${GREEN}Arch Linux uchun paket menejeri orqali o'rnatish...${NC}"
sudo pacman -U "$package_file" --noconfirm
;;
opensuse)
echo -e "${GREEN}openSUSE tizimida zypper orqali o'rnatilmoqda...${NC}"
sudo zypper install "$package_file" -y
;;
*)
echo -e "${RED}Ushbu distributsiya qo'llab-quvvatlanmaydi.${NC}"
;;
esac
}
# Funksiya: Git orqali dastur yoki plagin yuklash
install_from_git() {
read -p "Git repository URL manzilini kiriting: " git_url
read -p "Dastur qayerga yuklanadi? (standart: /opt/myapp): " dest_dir
dest_dir=${dest_dir:-/opt/myapp}
echo -e "${GREEN}Git orqali yuklanmoqda...${NC}"
git clone "$git_url" "$dest_dir"
if [ $? -eq 0 ]; then
echo -e "${GREEN}Yuklash muvaffaqiyatli yakunlandi!${NC}"
else
echo -e "${RED}Git orqali yuklashda xatolik yuz berdi.${NC}"
fi
}
# Funksiya: Arxiv fayldan dastur o'rnatish
install_from_archive() {
read -p "Fayl manzilini kiriting: " file_path
read -p "Faylni qayerga chiqarish kerak? (standart: /opt/myapp): " dest_dir
dest_dir=${dest_dir:-/opt/myapp}
case "$file_path" in
*.zip)
echo -e "${GREEN}Zip faylni chiqarilmoqda...${NC}"
unzip -o "$file_path" -d "$dest_dir"
;;
*.rar)
echo -e "${GREEN}Rar faylni chiqarilmoqda...${NC}"
unrar x -o+ "$file_path" "$dest_dir"
;;
*.tar.gz|*.tar.xz)
echo -e "${GREEN}Tar arxivni chiqarilmoqda...${NC}"
tar -xvf "$file_path" -C "$dest_dir"
;;
*)
echo -e "${RED}Noto'g'ri fayl formati. Iltimos, zip, rar yoki tar.gz fayl kiriting.${NC}"
return
;;
esac
if [ $? -eq 0 ]; then
echo -e "${GREEN}Fayl muvaffaqiyatli chiqarildi.${NC}"
if [ -f "$dest_dir/install.sh" ]; then
echo -e "${YELLOW}Install skript topildi. Uni ishga tushirayapmiz...${NC}"
chmod +x "$dest_dir/install.sh"
"$dest_dir/install.sh"
else
echo -e "${RED}Install skript topilmadi.${NC}"
fi
else
echo -e "${RED}Faylni chiqarishda xatolik yuz berdi.${NC}"
fi
}
# Funksiya: Curl orqali dastur o'rnatish
install_from_curl() {
read -p "Curl orqali yuklash uchun URL manzilini kiriting: " curl_url
echo -e "${GREEN}Curl orqali yuklanmoqda...${NC}"
sh -c "$(curl -fsSL $curl_url)"
if [ $? -eq 0 ]; then
echo -e "${GREEN}Dastur muvaffaqiyatli o'rnatildi!${NC}"
else
echo -e "${RED}Curl orqali yuklashda xatolik yuz berdi.${NC}"
fi
}
# Asosiy sikl
while true; do
show_menu
case $choice in
1)
install_from_package_manager
;;
2)
install_from_git
;;
3)
install_from_archive
;;
4)
install_from_curl
;;
5)
echo -e "${GREEN}Tooldan chiqildi.${NC}"
exit 0
;;
*)
echo -e "${RED}Noto'g'ri tanlov. Iltimos, 1-5 orasida tanlov kiriting.${NC}"
;;
esac
echo -e "\nEnter tugmasini bosing davom etish uchun..."
read
done