Merge remote branch 'grml-scripts/master'
[grml-scripts-core.git] / usr_sbin / blacklist
diff --git a/usr_sbin/blacklist b/usr_sbin/blacklist
new file mode 100755 (executable)
index 0000000..ff9f2d0
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+# Filename:      blacklist / unblacklist
+# Purpose:       blacklist module via module-init-tools
+# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+################################################################################
+
+PN="$(basename $0)"
+[ -n "$MODPROBEFILE" ] || MODPROBEFILE=/etc/modprobe.d/grml.conf
+[ -r /etc/grml/lsb-functions ] && . /etc/grml/lsb-functions
+
+if [ -z "$1" ] ; then
+  echo "Usage: $PN <module>"
+  echo "$PN (un)blacklists module via $MODPROBEFILE"
+  exit 1
+fi
+
+if [ "$(id -ru)" != "0" ] ; then
+   echo Error: become root before starting $0 >& 2
+   exit 100
+fi
+
+[ -f "$MODPROBEFILE" ] || touch "$MODPROBEFILE"
+
+if [ "$PN" = 'blacklist' ] ; then
+  if grep -q "^blacklist $1\$" $MODPROBEFILE ; then
+     eerror "Module $1 already on blacklist in $MODPROBEFILE" ; eend 1
+  else
+    einfo "Adding module $1 to blacklist $MODPROBEFILE"
+    echo "blacklist $1" >> $MODPROBEFILE
+    echo "alias $1 off" >> $MODPROBEFILE ; eend $?
+    modprobe -l | grep -q "${1}.ko" || ( ewarn "Notice: module $1 does not seem to exist. Adding anyway." ; eend 0 )
+  fi
+fi
+
+if [ "$PN" = 'unblacklist' ] ; then
+  if grep -q "^blacklist $1" $MODPROBEFILE ; then
+    einfo "Removing module $1 from blacklist $MODPROBEFILE"
+    sed -i "s/^blacklist.*$1$/# &/" $MODPROBEFILE
+    sed -i "s/^alias.*$1 off$/# &/" $MODPROBEFILE ; eend $?
+  else
+    eerror "Module $1 not blacklisted in $MODPROBEFILE" ; eend 1
+  fi
+fi
+
+## END OF FILE #################################################################