iscsid_volumes revision 1.4
11.1Smlelstv#!/bin/sh 21.1Smlelstv# 31.4Smlelstv# $NetBSD: iscsid_volumes,v 1.4 2023/07/22 10:31:35 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.4Smlelstv 391.4Smlelstv case $entry in 401.4Smlelstv *:chap:*|\ 411.4Smlelstv *:CHAP:*|\ 421.4Smlelstv *:none:*) 431.4Smlelstv dummy=${entry#*:} 441.4Smlelstv entry=${entry%%:*}:${dummy#*:} 451.4Smlelstv ;; 461.4Smlelstv esac 471.4Smlelstv 481.3Smlelstv case $entry in 491.3Smlelstv \#*|"") ;; 501.3Smlelstv "$user":*) pass=${entry#*:} ;; 511.3Smlelstv "$target":*) mpass=${entry#*:} ;; 521.3Smlelstv esac 531.3Smlelstv done < /etc/iscsi/auths 541.3Smlelstv fi 551.1Smlelstv 561.1Smlelstv case $host in 571.1Smlelstv *:*) 581.1Smlelstv port=${host#*:} 591.1Smlelstv host=${host%%:*} 601.1Smlelstv ;; 611.1Smlelstv *) 621.1Smlelstv port=3260 631.1Smlelstv ;; 641.1Smlelstv esac 651.1Smlelstv 661.1Smlelstv echo "Add target ${alias:-$target}" 671.1Smlelstv 681.1Smlelstv out=$(/sbin/iscsictl add_target$topts \ 691.1Smlelstv -a "$host" \ 701.1Smlelstv -p "$port" \ 711.1Smlelstv -n "$target" \ 721.1Smlelstv -t "$auth" \ 731.1Smlelstv -u "$user" \ 741.1Smlelstv -s "$pass" \ 751.1Smlelstv -S "$mpass" \ 761.4Smlelstv ${alias:+-N} ${alias:+"$alias"}) 771.1Smlelstv echo "$out" 781.1Smlelstv 791.1Smlelstv case $out in 801.1Smlelstv Added\ Target\ [1-9]*,\ Portal\ [1-9]*\ ) 811.1Smlelstv out=${out% } 821.1Smlelstv portal=${out##* } 831.1Smlelstv echo "Login $target via Portal $portal" 841.1Smlelstv /sbin/iscsictl login -P "$portal" 851.1Smlelstv ;; 861.1Smlelstv esac 871.1Smlelstv esac 881.1Smlelstv done < /etc/iscsi/volumes 891.1Smlelstv} 901.1Smlelstv 911.1Smlelstviscsid_volumes_stop() 921.1Smlelstv{ 931.2Smartin test -f /etc/iscsi/volumes || return 0 941.1Smlelstv 951.1Smlelstv while read host target digest auth user alias; do 961.1Smlelstv case $host in 971.3Smlelstv \#*|"") ;; 981.1Smlelstv *) 991.1Smlelstv echo "Remove target ${alias:-$target}" 1001.1Smlelstv 1011.1Smlelstv /sbin/iscsictl list_sessions \ 1021.1Smlelstv | while read key1 num key2 sesstarget; do 1031.1Smlelstv if [ x"$key1" = x"Session" -a \ 1041.1Smlelstv x"$key2" = x"Target" -a \ 1051.1Smlelstv x"$sesstarget" = x"$target" ]; then 1061.1Smlelstv /sbin/iscsictl logout -I "$num" | grep -v '^OK$' 1071.1Smlelstv fi 1081.1Smlelstv done 1091.1Smlelstv 1101.1Smlelstv /sbin/iscsictl list_targets \ 1111.1Smlelstv | while read num talias ttarget; do 1121.1Smlelstv if [ x"$ttarget" = x"$target" ]; then 1131.1Smlelstv /sbin/iscsictl remove_target -I "$num" 1141.1Smlelstv fi 1151.1Smlelstv done 1161.1Smlelstv ;; 1171.1Smlelstv esac 1181.1Smlelstv done < /etc/iscsi/volumes 1191.1Smlelstv} 1201.1Smlelstv 1211.1Smlelstvload_rc_config $name 1221.1Smlelstvrun_rc_command "$1" 123