Amaterasu
(Amaterasu)
23 Grudzień 2015 14:52
#1
Witam
Pracuję obecnie nad Apache oraz Webminem - chciałabym stworzyć skrypt włączający/wyłączający .service, który wyglądałby mniej więcej tak:
Chcesz włączyć (1) czy wyłączyć (2) Apache oraz Webmin?
Odpowiedź: (1 lub 2)
W przypadku 1 byłaby taka komenda:
sudo systemctl start httpd.service && sudo systemctl start webmin.service && exit
W przypadku 2:
sudo systemctl stop httpd.service && sudo systemctl stop webmin.service && exit
Może też być inaczej, sądzę, iż to jest troszeczkę trudniejsze:
Chcesz włączyć (1) czy wyłączyć (2) Apache lub/i Webmin?
Odpowiedź: (1 lub 2)
Które z nich chcesz włączyć (w przypadku odpowiedzi pierwszej)/wyłączyć (w przypadku odpowiedzi drugiej): Apache (1) lub/i Webmin (2)?
Odpowiedź: (1/2 lub enter, by wszystko włączyć/wyłączyć)
Mam nadzieję, że to, co napisałam, jest zrozumiałe… :). Oczywiście wszystko do pliku z rozszerzeniem .sh.
Dziękuję i pozdrawiam, Amaterasu :).
nintyfan
(nintyfan)
23 Grudzień 2015 17:30
#2
Wykorzystaj wbudowane polecenie read. Poczytaj też o echo i składni Basha - możesz to zrealizować zwykłym if-then-else-fi.
Juche
(Juche)
25 Grudzień 2015 10:22
#3
Ja tam się nie znam, ale takie coś powinno załatwić sprawę:
#!/bin/bash
echo "Chcesz włączyć (1) czy wyłączyć (2) Apache oraz Webmin?"
echo "Odpowiedź: (1 lub 2)"
read d
case "$d" in
"1") sudo systemctl start httpd.service && sudo systemctl start webmin.service && exit ;;
"2") sudo systemctl stop httpd.service && sudo systemctl stop webmin.service && exit ;;
esac
Amaterasu
(Amaterasu)
25 Grudzień 2015 15:19
#4
Dzięki ślicznie, już zrobiłam skrypt wczoraj na podstawie innego skryptu i wyszedł superowo :).
roobal
(roobal)
25 Grudzień 2015 22:10
#5
To można zrobić czytelniej, wg mnie z menu wyboru.
1. Włącz Apache
2. Wyłącz Apache
3. Włącz Webmin
4. Wyłącz Webmin
5. Włącz Apache i Webmin
6. Wyłącz Apache i Webmin
7. Zakończ skrypt
#!/bin/sh
menu ()
{
echo -e "1. Włącz Apache\n2. Wyłącz Apache\n3. Włącz Webmin\n4. Wyłącz Webmin\5. Włącz Apache i Webmin\n6. Wyłącz Apache i Webmin\n7. Zakończ skrypt"
echo -n "Wybierz opcję: "
read x
case "$x" in
"1") sudo systemctl start httpd ;;
"2") sudo systemctl stop httpd ;;
itd.
"5") sudo systemctl start httpd && sudo systemctl start webmin ;;
"6") sudo systemctl stop httpd && sudo systemctl stop webmin ;;
*)echo "Nic nie wybrałeś" ;;
esac
menu
}
menu
Przenoszę do odpowiedniego działu.
Amaterasu
(Amaterasu)
26 Grudzień 2015 14:05
#6
Ja zrobiłam to tak:
#!/bin/bash
#Colors
RED='\033[0;31m'
NC='\033[0m'
function starthttpdwebmin() {
command sudo systemctl start httpd.service && sudo systemctl start webmin.service && { printf "Usługi zostały włączone. Adres URL wirtualnego serwera Apache: localhost, zdalna konfiguracja urządzenia znajduje się na stronie https://localhost.localdomain:10000/. Podstawowe informacje dotyczące logowania: root (login) oraz hasło administratora systemu. \n"; }
}
function stophttpdwebmin() {
command sudo systemctl stop httpd.service && sudo systemctl stop webmin.service && { printf "Serwer Apache został wyłączony, zdalna konfiguracja urządzenia nie jest już możliwa.\n"; }
}
function starthttpd() {
command sudo systemctl start httpd.service && { printf "Serwer Apache został włączony. Strona URL: localhost. \n"; }
}
function stophttpd() {
command sudo systemctl stop httpd.service && { printf "Serwer Apache został wyłączony. \n"; }
}
function startwebmin() {
command sudo systemctl start webmin.service && { printf "Webmin został włączony. Zdalna konfiguracja urządzenia jest możliwa na stronie: https://localhost.localdomain:10000/. Login: root, hasło administratora systemu.\n"; }
}
function stopwebmin() {
command sudo systemctl stop webmin.service && { printf "Webmin został wyłączony. Zdalna konfiguracja urządzenia nie jest już możliwa. \n"; }
}
PS3='Proszę wpisać liczbę: '
options=("Włącz serwer Apache i zdalną konfigurację Webmin" "Wyłącz serwer Apache i zdalną konfigurację Webmin" "Włącz serwer Apache" "Wyłącz serwer Apache" "Włącz zdalną konfigurację Webmin" "Wyłącz zdalną konfigurację Webmin" "Wyjdź")
select opt in "${options[@]}"
do
case $opt in
"Włącz serwer Apache i zdalną konfigurację Webmin")
printf "${RED}Proszę wpisać hasło użytkownika. Usługi zostaną dopiero wtedy włączone.${NC}\n"
starthttpdwebmin
;;
"Wyłącz serwer Apache i zdalną konfigurację Webmin")
printf "${RED}Proszę wpisać hasło użytkownika. Usługi zostaną dopiero wtedy wyłączone.${NC}\n"
stophttpdwebmin
;;
"Włącz serwer Apache")
printf "${RED}Proszę wpisać hasło użytkownika. Serwer Apache zostanie dopiero wtedy włączony.${NC}\n"
starthttpd
;;
"Wyłącz serwer Apache")
printf "${RED}Proszę wpisać hasło użytkownika. Serwer Apache zostanie dopiero wtedy wyłączony.${NC}\n"
stophttpd
;;
"Włącz zdalną konfigurację Webmin")
printf "${RED}Proszę wpisać hasło użytkownika. Usługa Webmin zostanie dopiero wtedy włączona.${NC}\n"
startwebmin
;;
"Wyłącz zdalną konfigurację Webmin")
printf "${RED}Proszę wpisać hasło użytkownika. Usługa Webmin zostanie dopiero wtedy wyłączona.${NC}\n"
stopwebmin
;;
"Wyjdź")
exit 0
;;
*) echo Niewłaściwa opcja.;;
esac
done
Trochę bardziej dopieszczone i z tego, co widzę, trochę inne. Chyba całkiem inne :D.
Dziękuję za pomoc i pozdrawiam, Amaterasu :).