| #!/bin/sh |
| |
| # |
| # I try to get a repair script that can handle as many problems as possible. |
| # Feel free to send me some additions. |
| # |
| # (C) Michael Meskes <meskes@debian.org> Mon Jun 23 13:40:15 CEST 1997 |
| # Placed under GPL. |
| # Improvements, and modification for Redhat by Marc Merlin |
| # <marcsoft@merlins.org> |
| |
| # |
| # who to send mail to |
| # |
| admin=root |
| |
| # |
| # let's see what error message we got |
| # |
| case $1 in |
| # |
| # ENFILE: file table overflow |
| # => increase file-max by 10% |
| # |
| 23) |
| fm=`cat /proc/sys/fs/file-max` |
| fm=`expr $fm + $fm / 10` |
| echo $fm > /proc/sys/fs/file-max |
| # |
| # create log entry |
| # |
| echo "increased file-max to "$fm | logger -i -t repair -p daemon.info |
| # |
| # that's it, problem disappeared |
| # |
| exit 0;; |
| # |
| # ENETDOWN: network is down |
| # ENETUNREACH: network is unreachable |
| # => try to reconfigure network interface, there is no guarantee that |
| # this helps, but if it does not, reboot won't either |
| # |
| |
| 100|101) |
| if [ -x /etc/rc.d/init.d/network ]; then |
| # Redhat |
| /etc/rc.d/init.d/network stop |
| elif [ -x /etc/init.d/networking ]; then |
| # Debian |
| /etc/init.d/networking stop |
| else |
| ifconfig | |
| awk '/Link/ {print $1}' | |
| while read device |
| do |
| ifconfig ${device} down |
| done |
| fi |
| |
| # Calling rmmod -a twice should remove all unused modules (including networking |
| # ones). It might not work with very old rmmod binaries though, I don't know |
| rmmod -a |
| rmmod -a |
| |
| # |
| # make sure the modules gets back into it in case kerneld/kmod does not run |
| # |
| for module in `grep "^alias" /etc/conf.modules | awk '/eth/ {print $3}'` |
| do |
| modprobe $module |
| done |
| |
| # |
| # bring it back up |
| # |
| if [ -x /etc/init.d/networking ]; then |
| # Debian |
| /etc/init.d/networking start |
| elif [ -x /etc/rc.d/init.d/network ]; then |
| # Redhat |
| /etc/rc.d/init.d/network start |
| else |
| echo "Couldn't find network script to relaunch networking. Please edit $0" | logger -i -t repair -p daemon.info |
| exit $1 |
| fi |
| |
| |
| |
| # |
| # create log entry |
| # |
| echo "re-initialized network interface eth0" | logger -i -t repair -p daemon.info |
| # |
| # that' all we can do here |
| # |
| exit 0;; |
| esac |
| |
| # |
| # couldn't do anything |
| # tell the sysadmin what's going on |
| # |
| if [ -x /usr/bin/mail ] |
| then |
| echo `hostname`" is going down because of error "$1|/usr/bin/mail -s "System fault!" ${admin} |
| fi |
| # |
| # finally tell watchdog to reboot |
| # |
| exit $1 |