iscsid_volumes revision 1.3
11.1Smlelstv#!/bin/sh 21.1Smlelstv# 31.3Smlelstv# $NetBSD: iscsid_volumes,v 1.3 2023/02/18 07:51:52 mlelstv Exp $ 41.1Smlelstv# 51.1Smlelstv 61.1Smlelstv# PROVIDE: iscsid_volumes 71.1Smlelstv# REQUIRE: iscsid 81.1Smlelstv# BEFORE: securelevel mountcritremote 91.1Smlelstv 101.1Smlelstv$_rc_subr_loaded . /etc/rc.subr 111.1Smlelstv 121.1Smlelstvname="iscsid_volumes" 131.1Smlelstvrcvar=$name 141.1Smlelstvstart_cmd="iscsid_volumes_start" 151.1Smlelstvstop_cmd="iscsid_volumes_stop" 161.1Smlelstv 171.1Smlelstviscsid_volumes_start() 181.1Smlelstv{ 191.2Smartin test -f /etc/iscsi/volumes || return 0 201.1Smlelstv 211.1Smlelstv while read host target digest auth user alias; do 221.1Smlelstv case $host in 231.3Smlelstv \#*|"") ;; 241.1Smlelstv *) 251.1Smlelstv topts='' 261.1Smlelstv case $digest in 271.1Smlelstv *d*) topts="$topts -d";; 281.1Smlelstv esac 291.1Smlelstv case $digest in 301.1Smlelstv *h*) topts="$topts -h";; 311.1Smlelstv esac 321.1Smlelstv 331.1Smlelstv pass="-" 341.1Smlelstv mpass="-" 351.1Smlelstv 361.3Smlelstv if [ -f /etc/iscsi/auths ]; then 371.3Smlelstv while read entry dummy; do 381.3Smlelstv case $entry in 391.3Smlelstv \#*|"") ;; 401.3Smlelstv "$user":*) pass=${entry#*:} ;; 411.3Smlelstv "$target":*) mpass=${entry#*:} ;; 421.3Smlelstv esac 431.3Smlelstv done < /etc/iscsi/auths 441.3Smlelstv fi 451.1Smlelstv 461.1Smlelstv case $host in 471.1Smlelstv *:*) 481.1Smlelstv port=${host#*:} 491.1Smlelstv host=${host%%:*} 501.1Smlelstv ;; 511.1Smlelstv *) 521.1Smlelstv port=3260 531.1Smlelstv ;; 541.1Smlelstv esac 551.1Smlelstv 561.1Smlelstv echo "Add target ${alias:-$target}" 571.1Smlelstv 581.1Smlelstv out=$(/sbin/iscsictl add_target$topts \ 591.1Smlelstv -a "$host" \ 601.1Smlelstv -p "$port" \ 611.1Smlelstv -n "$target" \ 621.1Smlelstv -t "$auth" \ 631.1Smlelstv -u "$user" \ 641.1Smlelstv -s "$pass" \ 651.1Smlelstv -S "$mpass" \ 661.1Smlelstv -N "${alias:--}") 671.1Smlelstv echo "$out" 681.1Smlelstv 691.1Smlelstv case $out in 701.1Smlelstv Added\ Target\ [1-9]*,\ Portal\ [1-9]*\ ) 711.1Smlelstv out=${out% } 721.1Smlelstv portal=${out##* } 731.1Smlelstv echo "Login $target via Portal $portal" 741.1Smlelstv /sbin/iscsictl login -P "$portal" 751.1Smlelstv ;; 761.1Smlelstv esac 771.1Smlelstv esac 781.1Smlelstv done < /etc/iscsi/volumes 791.1Smlelstv} 801.1Smlelstv 811.1Smlelstviscsid_volumes_stop() 821.1Smlelstv{ 831.2Smartin test -f /etc/iscsi/volumes || return 0 841.1Smlelstv 851.1Smlelstv while read host target digest auth user alias; do 861.1Smlelstv case $host in 871.3Smlelstv \#*|"") ;; 881.1Smlelstv *) 891.1Smlelstv echo "Remove target ${alias:-$target}" 901.1Smlelstv 911.1Smlelstv /sbin/iscsictl list_sessions \ 921.1Smlelstv | while read key1 num key2 sesstarget; do 931.1Smlelstv if [ x"$key1" = x"Session" -a \ 941.1Smlelstv x"$key2" = x"Target" -a \ 951.1Smlelstv x"$sesstarget" = x"$target" ]; then 961.1Smlelstv /sbin/iscsictl logout -I "$num" | grep -v '^OK$' 971.1Smlelstv fi 981.1Smlelstv done 991.1Smlelstv 1001.1Smlelstv /sbin/iscsictl list_targets \ 1011.1Smlelstv | while read num talias ttarget; do 1021.1Smlelstv if [ x"$ttarget" = x"$target" ]; then 1031.1Smlelstv /sbin/iscsictl remove_target -I "$num" 1041.1Smlelstv fi 1051.1Smlelstv done 1061.1Smlelstv ;; 1071.1Smlelstv esac 1081.1Smlelstv done < /etc/iscsi/volumes 1091.1Smlelstv} 1101.1Smlelstv 1111.1Smlelstvload_rc_config $name 1121.1Smlelstvrun_rc_command "$1" 113