Бағдарламаны Shell Scripting - 2-бөлім арқылы біртіндеп құрыңыз

В 1 бөлігі осы сериядан біз келесі әрекеттерді қалай орындау керектігі туралы есімізде:

Алдыңғыларында біз өзімізді жақсы тәжірибелер тамаша құру кезінде ұстануға Linux үшін Bash-та Shell сценарийі, және жобалау тұрғысынан өте ерекше а Shebang және BSM (Bash қатаң режимі / қатаң Bash режимі).

GNU / Linux-те Shell сценарийін құрудың үздік тәжірибелері - 1 бөлім

GNU / Linux-те Shell сценарийін құрудың үздік тәжірибелері - 2 бөлім

 

Қабық сценарийБұл жазбада біз Linux үшін Bash-та Shell сценарийіне арналған қоршаған ортаның айнымалы модулі, мысал ретінде менің біреуімді алайық бағдарламалар (қосымшалар) а фактілері Shell сценарийі шақырылды Linux Post Install - екіжылдық сценарий 8.0, бірақ алдымен жақсы тәжірибелер оларды есте сақтау үшін:

  • Кодты белгілеңіз,
  • Код бөлімдері арасында бөлу кеңістігін қосыңыз,
  • Кодқа мүмкіндігінше түсініктеме беріңіз,
  • Функцияларының сипаттамалық атауларымен айнымалылар жасаңыз,
  • Пәрменді ауыстыру үшін VARIABLE = $ (команда) синтаксисін қолданыңыз
  • Модульдерді және / немесе айнымалыларды қолданыңыз: Белгіленген парольдермен немесе онсыз Superuser және авторизацияланған пайдаланушының тексеруі.
  • Модульдерді және / немесе айнымалыларды қолданыңыз: Операциялық жүйені растау (Distro, Version, Architecture, басқалары),
  • Модульдерді (процедураларды / бөлімдерді) сыни немесе топтық әрекеттердің (іс-қимылдардың / функциялардың) орындалуын растау үшін пайдаланыңыз,
  • Пайдаланушыға ыңғайлы интерфейстерді (пайдаланушыға ыңғайлы) қамтамасыз етіңіз: Терминал бойынша (диалогты қолданатын мәзірлер мен түстермен) және / немесе жұмыс үстелі арқылы (Zenity және Gxmessage қолданатын Windows көмегімен),
  • Қажет болса, қолданушыға қош келдіңіз және қоштасу модулін қосыңыз (хабарламалар),
  • Қосарланған тексеру модулін қосыңыз,
  • Сценарий өлшемін сыртқы функциялармен және / немесе модульдермен ұтымды ету,
  • Басқа аудармашыларға нақты және айқын түрде қоңырау шалыңыз,
  • Қажет деп санайтын кез-келген басқа логикалық және ұтымды ұсыныстарды қолданыңыз.

Мұнда а Linux үшін Bash-та Shell сценарийіне арналған қоршаған ортаның айнымалы модулі. Бұл барлық белгілі немесе ықтимал айнымалыларды қамтитын модуль (бөлім) болуы керек Shell сценарийі оны орындау үшін қажет немесе қажет болады. Мен өзім мыналарды қосамын:


###############################################################################
# INICIO DEL MODULO DE VARIABLES DE ENTORNO DEL SCRIPT
###############################################################################

NOM_SCRIPT=lpi_sb8_inicio_2016.sh
# echo $NOM_SCRIPT
# Almacenar como una variable predeterminada el Nombre real del Script

USR1_VALID=sysadmin
# echo $USR1_VALID
# Almacenar como una variable predeterminada el Nombre de Usuario valido que podrá ejecutar el Script.
# Haga una variable por cada Usuario Autorizado.

PASSWD_VALID=lpi*sb8
# echo $PASSWD_VALID
# Almacenar como una variable predeterminada el Nombre de la contraseña valida que permitirá ejecutar el Script.
# Haga una variable por cada contraseña de cada Usuario Autorizado.

S_O_VALID=kali
# echo $S_O_VALID
# Almacenar como una variable predeterminada el tipo de Sistema operativo valido para donde debe ser ejecutado el Script.

HOST_VALID=hostmovil-sysadmin
# echo $HOST_VALID
# Almacenar como una variable predeterminada el nombre del host valido donde debe ser ejecutado el Script.

IP_VALID=192.168.1.107
# echo $IP_VALID
# Almacenar como una variable predeterminada el nombre del host valido donde debe ser ejecutado el Script.

MAC_VALID=44:8a:5b:f0:3d:f3
# echo $MAC_VALID
# Almacenar como una variable predeterminada el nombre del host valido donde debe ser ejecutado el Script.

FILE_LOCK=lpi_sb_file_lock.txt
# echo $FILE_LOCK
# Almacenar el nombre de archivo predeterminada por el sistema para evitar doble ejecuciones ó detectar ejecuciones fallidas.

IDSUPERUSER=$(id -u | awk '{print $1}')
# IDSUPERUSER=$(echo $UID)
# IDSUPERUSER=$(getent passwd $USER | cut -d: -f3)
# echo $IDSUPERUSER
# Almacenar IUD del Superusuario root

USER_NAME_1=$(cat /etc/passwd | grep 1000 | cut -d: -f1 | awk '{print $1}')
HOME_USER_NAME_1=/home/$USER_NAME_1
# echo $USER_NAME_1 $HOME_USER_NAME_1
# Almacenar el nombre del usuario 1000 y su /home. Probable unico y primer Usuario del Sistema.

USER_NAME_2=$(cat /etc/passwd | grep 1001 | cut -d: -f1 | sed -n '2p' | awk '{print $1}')
HOME_USER_NAME_2=/home/$USER_NAME_2
# echo $USER_NAME_2 $HOME_USER_NAME_2
# Almacenar el nombre del usuario 1001 y su /home. Probable segundo Usuario del Sistema.

ID_USERNAME_SESSION=$(for i in $(who | sed 1q | cut -c 1-8); do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $1}' ; done | sed 1q)
# echo $ID_USERNAME_SESSION
# Almacenar el ID del Nombre del primer usuario (alfabeticamente) detectado conectado (con sesión abierta) en el sistema.

USERNAME_ID_SESSION=$(for i in $(who | sed 1q | cut -c 1-8); do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $2}' ; done ; echo $i)
# echo $USERNAME_ID_SESSION
# Almacenar el Nombre del primer usuario (alfabeticamente) detectado conectado (con sesión abierta) en el sistema.

# ID_FIRST_USERNAME=$(for i in 1000 1001 1002 1003 1004; do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $1}' ; done | sed -n '1p')
# echo $ID_FIRST_USERNAME
# Almacenar el ID del Nombre del primer usuario creado en el sistema entre los ID del 1000 al 1005.
# Nota: Solo funciona con la opción -o desactivada del MODO BASH ESTRICTO ó SEGURO (Bash Strict Mode / BSM)

# ID_FIRST_USERNAME=$(for i in $(seq 1000 1999); do grep $i /etc/passwd | awk '{print "\t" $1}' | tr -d '[A-Za-z]' | sed 's/::x*//' | cut -c 1-5 | awk '{print $1}' ; done | sed -n '1p')
# echo $ID_FIRST_USERNAME
# Almacenar el ID del Nombre del primer usuario creado en el sistema.
# Nota: Solo funciona con la opción -o desactivada del MODO BASH ESTRICTO ó SEGURO (Bash Strict Mode / BSM)

UBICACION=$(echo $PWD)
# UBICACION=$(pwd)
# echo $UBICACION
# Almacenar ruta de ejecución del Script LPI-SB

FECHA_SISTEMA_AN=$(date +"%d %b %y")
# echo $FECHA_SISTEMA_AN
# Almacenar la fecha  Alfanumerica actual del Equipo

FECHA_SISTEMA_N=$(date +"%d %m %y")
# echo $FECHA_SISTEMA_N
# Almacenar la fecha Numerica actual del Equipo

DIA_ACTUAL=$(date +"%d")
# echo $DIA_ACTUAL
# Almacenar el día actual del Equipo

MES_ACTUAL_A=$(date +"%b")
# echo $MES_ACTUAL_A
# Almacenar el mes alfabetico actual del Equipo

MES_ACTUAL_N=$(date +"%m")
# echo $MES_ACTUAL_N
# Almacenarel mes numerico actual del Equipo

ANO_ACTUAL_2C=$(date +"%y")
# echo $ANO_ACTUAL_2C
# Almacenar el año (con 2 cifras) actual del Equipo

ANO_ACTUAL_4C=$(date +"%Y")
# echo $ANO_ACTUAL_4C
# Almacenar el año (con 4 cifras) actual del Equipo

HORA_SISTEMA=$(date +"%H:%M")
# echo $HORA_SISTEMA
# Almacenar la Hora actual del Equipo

HORA_ACTUAL=$(date +"%H")
# echo $HORA_ACTUAL
# Almacenar la Hora actual del Equipo

MINUTOS_ACTUAL=$(date +"%M")
# echo $MINUTOS_ACTUAL
# Almacenar la Hora actual del Equipo

TIPO_S_O_L=$(uname -o)
# echo $TIPO_S_O_L
# Almacena el nombre largo del tipo de Sistema Operativo encontrado.

TIPO_S_O_C=$(uname -s)
# echo $TIPO_S_O_C
# Almacena el nombre corto del tipo de Sistema Operativo encontrado.

NOM_DISTRO_L=$(cat /etc/os-release | grep NAME | grep -v "VERSION" | sed -n '2p' | cut -f2 -d\")
# NOM_DISTRO_L=$(lsb_release -d | sed 's/Description://')
# echo $NOM_DISTRO_L
# Almacena el nombre largo de la Distro detectada.

NOM_DISTRO_C=$(cat /etc/os-release | grep NAME | grep -v "VERSION" | sed -n '2p' | cut -f2 -d\" | awk '{print $1}')
# NOM_DISTRO_C=$(lsb_release -d | sed 's/Description://' | awk '{print $1}')
# echo $NOM_DISTRO_C
# Almacena el nombre corto de la Distro detectada.

ID_DISTRO=$(cat /etc/os-release | grep ID | grep -v "VERSION_ID" | grep -v "ID_LIKE" | sed 's/ID=//' | sed 's/"//g')
# ID_DISTRO=$(lsb_release -i | awk '{print $3}')
# echo $ID_DISTRO
# Almacena el ID de la Distro detectada.

VER_DISTRO=$(cat /etc/os-release | grep VERSION= | sed -n '1p' | sed 's/VERSION=//' | sed 's/"//g')
# VER_DISTRO=$(lsb_release -c | sed 's/Codename://')
# echo $VER_DISTRO
# Almacena el nombre de la versión de la Distro detectada.

ID_VER_DISTRO=$(cat /etc/os-release | grep VERSION_ID= | sed -n '1p' | sed 's/VERSION_ID=//' | sed 's/"//g')
# ID_VER_DISTRO=$(lsb_release -r | sed 's/Release://')
# echo $ID_VER_DISTRO
# Almacena el ID de la versión de la Distro detectada.

ARQ_DISTRO_COD=$(uname -m)
# echo $ARQ_DISTRO_COD
# Almacenar el Tipo de Arquitectura de la Distro detectada en forma codificada.

ARQ_DISTRO_COD=$(uname -m) ; if [[ "$ARQ_DISTRO_COD" = "x86" ]]; then ARQ_DISTRO_HUM=32; else ARQ_DISTRO_HUM=64; fi
# echo $ARQ_DISTRO_HUM
# Convertir el Tipo de Arquitectura de la Distro detectada en forma codificada a forma humana.

VER_KERNEL=$(uname -r)
# echo $VER_KERNEL
# Almacenar el Nombre del Arquitectura de la Distro detectada.

NOM_HOST=$(cat /etc/hostname)
# echo $NOM_HOST
# Almacenar el Nombre del Host donde se ejecuta el Script.

IP_ETH0=$(ifconfig eth0 | grep inet | grep -v inet6 | cut -d ":" -f 2 | cut -d " " -f 1)
MAC_ETH0=$(ifconfig eth0 | sed -n '1p' | awk '{print $5}')
# IP_INTERNA=$(hostname -I)
# echo $IP_ETH0 $MAC_ETH0
# Almacenar la IP / MAC del Host donde se ejecuta el Script.

echo "Variables de entorno cargadas sin errores, en 5 segundos la aplicación continuará ejecutandose"
sleep 5

###############################################################################
# FINAL DEL MODULO DE VARIABLES DE ENTORNO DEL SCRIPT
###############################################################################

===============

Ескерту: Сіздің қажеттіліктеріңізге немесе іске асыруларыңызға байланысты командалық пәрменді қосуға болады my_variable экспорттау Алдыңғы айнымалылардың әрқайсысының астында немесе тікелей команда командасымен жасалған айнымалыларды құрыңыз немесе экспорттаңыз экспорт my_variable = my_parameters

Кейінірек, келесі жазбаларда біз мысал көре береміз модульдер (бөлімдер) сияқты функцияларды орындайтын:

  • ЕКІ ЕСЕП АЙҚЫНДАУ МОДУЛІ немесе ҚАТЕСІЗ АТҚАРУ
  • Оңтайландыру модулі
  • ПАЙДАЛАНУШЫДЫ ҚҰПИЯ СӨЗМЕН БІЛІКТІРУ МОДУЛІ
  • ОПЕРАТИВТІК ЖҮЙЕНІҢ АРХИТЕКТУРАСЫН АНЫҚТАУ МОДУЛІ
  • ТІЛДІ КОНФИГУРАЦИЯЛАУ МОДУЛІНІҢ КОДТАЛУЫ
  • Қоршаған ортаны қорғауға арналған конфигурация модулі

Басқалардың арасында!

Олар командалар туралы өздігінен білім ала алады: gksu, диалог, gxmessage, zenity, espeak, play, басқалардың арасында графикалық интерфейстерді терминал арқылы немесе пайдаланушының жұмыс үстелі үшін дыбыстық немесе мультимедиялық ескертулермен құру, және олар кейінірек қолданатыны туралы білімді жоғарылату.

Есіңізде болсын, осы және кейбір басқа ұсыныстар модуль, функция, айнымалы, команда немесе әрекет жалпы оны жүзеге асыруға болады көптеген жолдар, және мұнда тек біреуі көрсетілген қарапайым әдіс, көптеген мүмкін және ықтимал тәсілдер онда айтылған әрекет жүзеге асырылуы мүмкін немесе мүмкін!

Аяқтау үшін мен сені тастаймын, а Мен жасаған скринкаст, мұны аяқтағаннан кейін сіз не істей алатыныңызды көрсету үшін Shell Scripting онлайн курсы DesdeLinux:

LPI-SB8 скринкаст сынағы

(LINUX POST INSTALL - SCRIPT BICENTENARIO 8.0.0) - 2 бөлім

 


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

2 пікір, өз пікіріңізді қалдырыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады.

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.

  1.   белгісіз дижо

    Адамдар үшін күн:
    echo -e «\ e [1; 32mDate:» $ (күні «+% d-% m-% Y») «\ e [1; 32m Уақыты:» $ (күні «+% T»)

    Нағыз «uname -s»:
    cat / proc / sys / kernel / ostype

    Тарату атауы:
    мысық / etc / * босату | кесу -f2 -d »| бас -1

    Хост атауы:
    cat / proc / sys / kernel / hostname

    ОЖ сәулеті:
    [[-x / sbin / init]] && файл / sbin / init | awk '{print $ 7}' | tr -d ',' || [[-x / lib / systemd / systemd]] && файл / lib / systemd / systemd | awk '{print $ 7}' | tr -d ',' 2> / dev / null

    Ядро нұсқасы:
    cat / proc / sys / kernel / osrelease

  2.   Инг. Хосе Альберт дижо

    Маған сіздің алғашқы үлесіңіз «адамдар үшін дата» өте ұнады, өйткені шығарылым мысал бола алады:

    Күні: 11 Уақыты: 02:2016:16

    Диалогтық терезеде, zenity немесе gxmessage терезесінде визуалды түрде сіңімді болып табылады!

    Сіздің екінші ұсынысыңызбен мен оны келесідей орналастырғым келеді:

    егер шын «uname -s» && cat / proc / sys / kernel / ostype болса; содан кейін «Операциялық жүйе тексерілді» жаңғырығы; fi | шөлдеу 1д

    Сонымен, әрдайым байытқан үлестеріңіз үшін көп рахмет!

bool(шын)