iscsid_volumes revision 1.1
11.1Smlelstv#!/bin/sh 21.1Smlelstv# 31.1Smlelstv# $NetBSD: iscsid_volumes,v 1.1 2023/02/03 13:53:40 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.1Smlelstv test -f /etc/iscsi/volumes || return 201.1Smlelstv 211.1Smlelstv while read host target digest auth user alias; do 221.1Smlelstv case $host in 231.1Smlelstv \#*) ;; 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.1Smlelstv while read entry dummy; do 371.1Smlelstv case $entry in 381.1Smlelstv \#*) ;; 391.1Smlelstv "$user":*) pass=${entry#*:} ;; 401.1Smlelstv "$target":*) mpass=${entry#*:} ;; 411.1Smlelstv esac 421.1Smlelstv done < /etc/iscsi/auths 431.1Smlelstv 441.1Smlelstv case $host in 451.1Smlelstv *:*) 461.1Smlelstv port=${host#*:} 471.1Smlelstv host=${host%%:*} 481.1Smlelstv ;; 491.1Smlelstv *) 501.1Smlelstv port=3260 511.1Smlelstv ;; 521.1Smlelstv esac 531.1Smlelstv 541.1Smlelstv echo "Add target ${alias:-$target}" 551.1Smlelstv 561.1Smlelstv out=$(/sbin/iscsictl add_target$topts \ 571.1Smlelstv -a "$host" \ 581.1Smlelstv -p "$port" \ 591.1Smlelstv -n "$target" \ 601.1Smlelstv -t "$auth" \ 611.1Smlelstv -u "$user" \ 621.1Smlelstv -s "$pass" \ 631.1Smlelstv -S "$mpass" \ 641.1Smlelstv -N "${alias:--}") 651.1Smlelstv echo "$out" 661.1Smlelstv 671.1Smlelstv case $out in 681.1Smlelstv Added\ Target\ [1-9]*,\ Portal\ [1-9]*\ ) 691.1Smlelstv out=${out% } 701.1Smlelstv portal=${out##* } 711.1Smlelstv echo "Login $target via Portal $portal" 721.1Smlelstv /sbin/iscsictl login -P "$portal" 731.1Smlelstv ;; 741.1Smlelstv esac 751.1Smlelstv esac 761.1Smlelstv done < /etc/iscsi/volumes 771.1Smlelstv} 781.1Smlelstv 791.1Smlelstviscsid_volumes_stop() 801.1Smlelstv{ 811.1Smlelstv test -f /etc/iscsi/volumes || return 821.1Smlelstv 831.1Smlelstv while read host target digest auth user alias; do 841.1Smlelstv case $host in 851.1Smlelstv \#*) ;; 861.1Smlelstv *) 871.1Smlelstv echo "Remove target ${alias:-$target}" 881.1Smlelstv 891.1Smlelstv /sbin/iscsictl list_sessions \ 901.1Smlelstv | while read key1 num key2 sesstarget; do 911.1Smlelstv if [ x"$key1" = x"Session" -a \ 921.1Smlelstv x"$key2" = x"Target" -a \ 931.1Smlelstv x"$sesstarget" = x"$target" ]; then 941.1Smlelstv /sbin/iscsictl logout -I "$num" | grep -v '^OK$' 951.1Smlelstv fi 961.1Smlelstv done 971.1Smlelstv 981.1Smlelstv /sbin/iscsictl list_targets \ 991.1Smlelstv | while read num talias ttarget; do 1001.1Smlelstv if [ x"$ttarget" = x"$target" ]; then 1011.1Smlelstv /sbin/iscsictl remove_target -I "$num" 1021.1Smlelstv fi 1031.1Smlelstv done 1041.1Smlelstv ;; 1051.1Smlelstv esac 1061.1Smlelstv done < /etc/iscsi/volumes 1071.1Smlelstv} 1081.1Smlelstv 1091.1Smlelstvload_rc_config $name 1101.1Smlelstvrun_rc_command "$1" 111