File: resume-vm-default

package info (click to toggle)
open-vm-tools 1%3A8.4.2-261024-1%2Bbuild1
  • links: PTS, VCS
  • area: contrib
  • in suites: squeeze-lts
  • size: 20,376 kB
  • ctags: 30,043
  • sloc: ansic: 164,785; sh: 10,713; cpp: 6,525; makefile: 3,386
file content (145 lines) | stat: -rw-r--r-- 3,937 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/sh
##########################################################
# Copyright (C) 2001-2008 VMware, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation version 2.1 and no later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
#
##########################################################

##########################################################################
# DO NOT modify this file directly as it will be overwritten the next
# time the VMware Tools are installed.
##########################################################################

echo `date` ": Executing '$0'"
echo

find_networking_script() {
    local script="error"
    for dir in "/etc/init.d" "/sbin/init.d" "/etc" "/etc/rc.d" ; do
        if [ -d "$dir/rc0.d" ] &&
	    [ -d "$dir/rc1.d" ] &&
	    [ -d "$dir/rc2.d" ] &&
	    [ -d "$dir/rc3.d" ] &&
	    [ -d "$dir/rc4.d" ] &&
	    [ -d "$dir/rc5.d" ] &&
	    [ -d "$dir/rc6.d" ]; then

	    # Now find the appropriate networking script.
	    if [ -d "$dir/init.d" ]; then
		if [ -x "$dir/init.d/network" ]; then
		    script="$dir/init.d/network"
		elif [ -x "$dir/init.d/networking" ]; then
		    script="$dir/init.d/networking"
		fi
	    else
		if [ -x "$dir/network" ]; then
		    script="$dir/network"
		elif [ -x "$dir/networking" ]; then
		    script="$dir/networking"
		fi
	    fi
        fi
    done

    echo "$script"
}

rescue_NIC() {
   niclist="/var/run/vmware-active-nics"

   ifup_path=`which ifup 2>/dev/null`;
   if [ $? -ne 0 ]; then
      return 1;
   fi

   ifconfig_path=`which ifconfig 2>/dev/null`;
   if [ $? -ne 0 ]; then
      return 1;
   fi

   if [ -f "$niclist" ]; then
      while read nic; do
         if $ifconfig_path $nic | egrep '^ +UP ' >/dev/null 2>&1; then
            echo `date` "[resume-vm-default::rescue_nic] $nic is already active."
         else
            echo `date` "[rescue_nic] activating $nic ..."

            $ifup_path $nic
         fi
      done < $niclist

      rm -f $niclist
   fi
}


#
# wakeNetworkManager --
#
#    Wake the NetworkManager daemon (maybe).
#
#    See http://projects.gnome.org/NetworkManager/developers/spec.html .
#
# Results:
#    Sleep(false)request is sent to the NetworkManager D-Bus interface.
#
# Side effects:
#    None.
#

wakeNetworkManager() {
   # `which' may be a bit noisy, so we'll shush it.
   dbusSend=`which dbus-send 2>/dev/null`
   if [ $? -eq 0 ]; then
      # NetworkManager 0.6
      $dbusSend --system --dest=org.freedesktop.NetworkManager          \
         /org/freedesktop/NetworkManager                                \
         org.freedesktop.NetworkManager.wake
      # NetworkManager 0.7.0
      $dbusSend --system --dest=org.freedesktop.NetworkManager          \
         /org/freedesktop/NetworkManager                                \
         org.freedesktop.NetworkManager.Sleep boolean:false
   fi
}


#
# main
#

wakeNetworkManager

network=`find_networking_script`
if [ "$network" != "error" ]; then
   "$network" restart
   # Continue even if the networking init script wasn't successful.
   status=0
else
   echo "networking script not found"
   status=1
fi

if [ $status -eq 0 ]; then
    rescue_NIC
fi

scriptsdir="`dirname $0`/scripts/`basename $0`.d"
if [ -d "$scriptsdir" ]; then
    for scriptfile in "$scriptsdir"/*; do
	[ -x "$scriptfile" ] && "$scriptfile" resume-vm
    done
fi

exit "$status"