셸 스크립팅을 사용하여 단계별 프로그램 빌드-2 부

부품 1 이 시리즈에서는 다음을 구현하는 방법을 기억합니다.

그리고 이전에 우리는 더 나은 방법 우수를 만들 때 따라야 할 Linux 용 Bash의 쉘 스크립트, 특히 디자인 측면에서 Shebang 및 BSM (Bash Strict 모드 / Strict Bash 모드).

GNU / Linux에서 셸 스크립트를 만드는 모범 사례-1 부

GNU / Linux에서 셸 스크립트를 만드는 모범 사례-2 부

쉘 스크립팅

이 게시물에서 우리는 Linux 용 Bash의 쉘 스크립트 용 환경 변수 모듈, 내 프로그램 (응용 프로그램) 의 사실 쉘 스크립트 라고 Linux 설치 후-Bicentennial Script 8.0, 그러나 먼저 작은 요약 더 나은 방법 이를 염두에 두십시오.

  • 코드를 입력하십시오.
  • 코드 섹션 사이에 구분 공백을 추가하고,
  • 코드에 최대한 댓글을 달아주세요.
  • 함수를 설명하는 이름으로 변수를 만듭니다.
  • 명령 대체를 위해 VARIABLE = $ (명령) 구문을 사용하십시오.
  • 다음의 모듈 및 / 또는 변수를 사용합니다. 설정된 암호를 사용하거나 사용하지 않고 수퍼 유저 및 인증 된 사용자 유효성 검사.
  • 다음의 모듈 및 / 또는 변수를 사용합니다. 운영 체제 유효성 검사 (Distro, 버전, 아키텍처 등),
  • 모듈 (절차 / 섹션)을 사용하여 중요 또는 배치 작업 (활동 / 기능)의 실행을 확인합니다.
  • 사용자 친화적 인 인터페이스 제공 (사용자 친화적) : 터미널 별 (대화 상자를 사용하는 메뉴 및 색상 포함) 및 / 또는 데스크탑 별 (Zenity 및 Gxmessage를 사용하는 Windows),
  • 필요한 경우 사용자에게 환영 및 작별 인사 (메시지) 모듈을 포함합니다.
  • 이중 실행 검증 모듈 포함,
  • 외부 함수 및 / 또는 모듈로 스크립트 크기 합리화,
  • 다른 통역사에게 명확하고 분명한 방법으로 전화를 걸고,
  • 필요하다고 생각되는 기타 논리적이고 합리적인 권장 사항을 적용하십시오.

다음은 Linux 용 Bash의 쉘 스크립트 용 환경 변수 모듈. 이것은 모든 특정 또는 가능한 변수를 포함하는 모듈 (섹션)이어야합니다. 쉘 스크립트 실행이 필요하거나 필요합니다. 개인적으로 다음을 추가합니다.


###############################################################################
# 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 내보내기 이전에 생성 된 각 변수 아래에 있거나 명령 명령으로 직접 생성 한 고유 변수를 생성하고 내 보냅니다. export my_variable = my_parameters

나중에 향후 게시물에서 계속해서 모듈 (섹션) 다음과 같은 기능을 수행합니다.

  • DOUBLE EXECUTION DETECTION MODULE 또는 FAILED EXECUTION
  • 최적화 모듈
  • 암호가있는 사용자 인증 모듈
  • 운영 체제의 구조 감지 모듈
  • 코딩 언어 구성 모듈
  • 실행 환경을위한 프록시 구성 모듈

많은 것 중에서!

그들은 명령에 대해 독학 할 수 있습니다.: gksu, 대화, gxmessage, zenity, espeak, 재생, 그 중에서도 음향 또는 멀티미디어 경고와 함께 터미널 또는 사용자 데스크탑을위한 그래픽 인터페이스 생성, 그리고 그들이 나중에 사용할 지식을 발전시킵니다.

이러한 권장 사항 및 기타 권장 사항을 기억하십시오. 모듈, 함수, 변수, 명령 또는 작업 일반적으로 수행 할 수 있습니다. 여러 가지 방법, 여기에 표시된 것은 간단한 방법가능한 많은 가능한 방법 어느 말에서 조치를 취할 수 있거나 수행 할 수 있습니다.!

끝내기 위해 나는 너를 떠난다. 내가 만든 Screencast 동영상,이 작업을 마친 후 무엇을 할 수 있는지 보여주기 위해 쉘 스크립팅 온라인 코스 DesdeLinux:

LPI-SB8 테스트 ScreenCast

(LINUX POST INSTALL-BICENTENNIAL SCRIPT 8.0.0)-2 부


2 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   이름이없는

    인간을위한 날짜 :
    echo -e«\ e [1; 32m 날짜 :»$ (날짜«+ % d- % m- % Y»)«\ e [1; 32m 시간 :»$ (날짜«+ % T»)

    진정한 "uname -s":
    cat / proc / sys / kernel / ostype

    배포판 이름 :
    고양이 / 기타 / * 출시 | 잘라 내기 -f2 -d»| 머리 -1

    호스트 이름 :
    cat / proc / sys / kernel / hostname

    OS 아키텍처 :
    [[-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:04:10

    대화, zenity 또는 gxmessage 창에서 효과적으로 시각적으로 이해하기 쉽습니다!

    두 번째 제안으로 다음과 같이 배치하고 싶습니다.

    참이면 "uname -s"&& cat / proc / sys / kernel / ostype; then echo "운영 체제 검증 됨"; fi | 갈증 1d

    그리고 마지막으로 언제나처럼 풍성한 기여에 감사드립니다!