Want more features on Pastebin? Sign Up, it's FREE!
Guest

iscsi.hook

By: a guest on Jun 3rd, 2012  |  syntax: Bash  |  size: 2.01 KB  |  views: 45  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/bin/bash
  2.  
  3. # Adapted from the debian package
  4.  
  5. parse_iscsi_ops () {
  6.         [ -e /etc/iscsi/iscsi.initramfs ] && . /etc/iscsi/iscsi.initramfs
  7.  
  8.         for x in $(cat /proc/cmdline); do
  9.                 case ${x} in
  10.                 iscsi_auto)
  11.                         ISCSI_AUTO=true
  12.                         ;;
  13.                 iscsi_initiator=*)
  14.                         ISCSI_INITIATOR="${x#iscsi_initiator=}"
  15.                         ;;
  16.                 iscsi_target_name=*)
  17.                         ISCSI_TARGET_NAME="${x#iscsi_target_name=}"
  18.                         ;;
  19.                 iscsi_target_ip=*)
  20.                         ISCSI_TARGET_IP="${x#iscsi_target_ip=}"
  21.                         ;;
  22.                 iscsi_target_port=*)
  23.                         ISCSI_TARGET_PORT="${x#iscsi_target_port=}"
  24.                         ;;
  25.                 iscsi_target_group=*)
  26.                         ISCSI_TARGET_GROUP="${x#iscsi_target_group=}"
  27.                         ;;
  28.                 iscsi_username=*)
  29.                         ISCSI_USERNAME="${x#iscsi_username=}"
  30.                         ;;
  31.                 iscsi_password=*)
  32.                         ISCSI_PASSWORD="${x#iscsi_password=}"
  33.                         ;;
  34.                 iscsi_in_username=*)
  35.                         ISCSI_IN_USERNAME="${x#iscsi_in_username=}"
  36.                         ;;
  37.                 iscsi_in_password=*)
  38.                         ISCSI_IN_PASSWORD="${x#iscsi_in_password=}"
  39.                         ;;
  40.                 esac
  41.         done
  42. }
  43.  
  44. do_iscsi_login () {
  45.  
  46.  
  47.         modprobe crc32c
  48.         modprobe iscsi_tcp
  49.  
  50.         if [ -z $ISCSI_AUTO ]; then
  51.                 if [ -z $ISCSI_INITIATOR ]; then
  52.                         . /etc/iscsi/initiatorname.iscsi
  53.                         ISCSI_INITIATOR=$InitiatorName
  54.                 fi
  55.  
  56.                 [ -z $ISCSI_TARGET_PORT ] && ISCSI_TARGET_PORT=3260
  57.                 [ -z $ISCSI_TARGET_GROUP ] && ISCSI_TARGET_GROUP=1
  58.  
  59.                 for i in $ISCSI_TARGET_IP; do
  60.                 iscsistart -i $ISCSI_INITIATOR -t $ISCSI_TARGET_NAME    \
  61.                            -g $ISCSI_TARGET_GROUP -p $ISCSI_TARGET_PORT         \
  62.                            -a $i ${ISCSI_USERNAME:+-u "$ISCSI_USERNAME"}        \
  63.                            ${ISCSI_PASSWORD:+-w "$ISCSI_PASSWORD"}                      \
  64.                            ${ISCSI_IN_USERNAME:+-U "$ISCSI_IN_USERNAME"}        \
  65.                            ${ISCSI_IN_PASSWORD:+-W "$ISCSI_IN_PASSWORD"}
  66.                 done
  67.         else
  68.                 modprobe iscsi_ibft
  69.                 iscsistart -N
  70.                 iscsistart -b
  71.         fi
  72. }
  73.  
  74. run_hook() {
  75.         parse_iscsi_ops
  76.  
  77.         if [ $ISCSI_AUTO ]; then
  78.                 msg "Arch kernel does not compile iscsi_ibft module"
  79.                 msg "The auto_detection will not work (see FS#30110)"
  80.         elif ( [ -z $ISCSI_TARGET_NAME ] || [ -z $ISCSI_TARGET_IP ] ) ; then
  81.                 msg "Not enough data to connect an iscsi rootfs"
  82.         else
  83.                 do_iscsi_login
  84.                 udevadm settle
  85.         fi
  86. }
clone this paste RAW Paste Data