#!/bin/bash fifo_name="tapes.pipe" scratch_dir="/home/ibmsys1/tapes/scratch" used_dir="/home/ibmsys1/tapes/used" while true do #lee la cola FIFA creada con mkfifo if read line; then IFS=',' read -ra ADDR <<< "$line" #Mensaje IEF233A --> Montar cinta if [[ ${ADDR[0]} == *"IEF233A"* ]]; then #Si es una cinta PRIVAT es una cinta nueva para escribir if [[ ${ADDR[1]} == *"PRIVAT"* ]]; then #Coge la unidad donde se montara la cinta unit=(${ADDR[0]}) #Busca la primera cinta scratch disponible y la monta for entry in "$scratch_dir"/* do if [[ $entry != "/home/ibmsys1/tapes/scratch/*" ]]; then echo "awsmount ${unit[2]} -m $entry" awsmount ${unit[2]} -m $entry break else #Si no quedan cintas scratch, busca el numero de la ultima cinta usada echo "No quedan cintas scratch." for entry_tape in "$used_dir"/* do last_tape="${entry_tape}" done IFS='/' read -ra ADDR <<< "$last_tape" # Cogemos el numero de cinta y quitamos los ceros iniciales tape_number=$(echo ${ADDR[5]:1:5} | sed 's/^0*//') # Sabiendo el numero de la ultima cinta usada, crea el nombre de la siguiente next_tape=$((tape_number + 1)) printf -v next_tape_format "%05d" ${next_tape} tape="T"${next_tape_format} #Inicializa la nueva cinta echo "aws_tapeInit ${tape} /home/ibmsys1/tapes/scratch/${tape}" aws_tapeInit ${tape} /home/ibmsys1/tapes/scratch/${tape} #Monta la nueva cinta echo "awsmount ${unit[2]} -m /home/ibmsys1/tapes/scratch/${tape}" awsmount ${unit[2]} -m /home/ibmsys1/tapes/scratch/${tape} fi done else #Si se necesita una cinta usada para leerla #Coge la unidad y la cinta solicitada y la monta unit=(${ADDR[0]}) echo "awsmount ${unit[2]} -m /home/ibmsys1/tapes/used/${ADDR[1]}" awsmount ${unit[2]} -m /home/ibmsys1/tapes/used/${ADDR[1]} fi #Si el mensaje es un desmontaje else if [[ ${ADDR[0]} == *"IEF234E"* ]]; then #Comprueba si la cinta desmontada esta en Scratch porque era nueva #Si era nueva la mueve a la carpeta de usadas if [ -f "$scratch_dir/${ADDR[1]}" ]; then echo "mv "$scratch_dir"/"${ADDR[1]}" "$used_dir/${ADDR[1]}"" mv "$scratch_dir/${ADDR[1]}" "$used_dir/${ADDR[1]}" fi fi fi fi done <"$fifo_name"