Advertisement
Guest User

iscsi.hook

a guest
Jun 3rd, 2012
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.01 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement