tag:blogger.com,1999:blog-18226053478307190872023-11-16T05:07:09.516+11:00TECH NOTES JOURNEY THROUGH A DECADEUnknownnoreply@blogger.comBlogger135125tag:blogger.com,1999:blog-1822605347830719087.post-966795132664365772022-10-22T21:09:00.005+11:002022-10-25T09:12:21.285+11:00Build Custom AWS Config rules using Guard DSL<p class="MsoNormal"><span lang="EN-US">I want to use AWS config to report S3 buckets
without public blocking enabled except for some buckets with prefix like www, there is a AWS managed rule which can achieve this with a limitation: the excluded buckets
must be provided as exact names separated by comma, regex match is not
supported.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Previously, to create a custom rule, you
would have to define an AWS Lambda function, from June 2022, you can author
AWS Config custom rules using Guard DSL without needing to develop AWS Lambda
functions</span>.<o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<h1 style="text-align: left;"><span lang="EN-US"><b>What is Guard DSL?</b></span></h1>
<p class="MsoNormal"><span lang="EN-US">Guard DSL is open-source policy-as-code
domain-specific language (DSL) to write rules and validate JSON- and
YAML-formatted data such as CloudFormation Templates, K8s configurations, and
Terraform JSON plans/configurations against those rules.</span> It is language
developed by <a href="https://github.com/aws-cloudformation/cloudformation-guard" target="_blank">CloudFormation Guard project.</a><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> Ignore</o:p></span> the word CloudFormation here,
Guard DSL is mainly used for validating CloudFormation template, but in the AWS
config context, it has nothing to do with CloudFormation.</p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<h1 style="text-align: left;"><span lang="EN-US"><b>Get started with Guard DSL</b></span></h1>
<p class="MsoNormal"><span lang="EN-US"><a href="https://docs.aws.amazon.com/cfn-guard/latest/ug/writing-rules.html" target="_blank">Learn Guard DSL syntax</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Ignore all object reference name from above
document, the names are CloudFormation Objects. For the purpose of AWS config, refer to <a href="https://github.com/awslabs/aws-config-resource-schema/tree/master/config/properties/resource-types" target="_blank">aws-config-resource-schema</a> <o:p></o:p></span></p>
<p class="MsoNormal"><b>Sample AWS Config Rule with Guard DSL.</b></p>
<p class="MsoNormal"><span lang="EN-US">Create AWS Config Rule->Create custom
rule using Guard</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Scope of changes
->Resource Type(S3 Buckets)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Rule Content:</span> </p>
<pre style="text-align: left;">
rule s3_bucket_is_public when
resourceType == "AWS::S3::Bucket" configuration.name != /^www/ {
supplementaryConfiguration.PublicAccessBlockConfiguration.blockPublicPolicy exists
supplementaryConfiguration.PublicAccessBlockConfiguration.blockPublicAcls exists
supplementaryConfiguration.PublicAccessBlockConfiguration.restrictPublicBuckets exists
supplementaryConfiguration.PublicAccessBlockConfiguration.ignorePublicAcls exists
}
rule s3_bucket_not_public when
s3_bucket_is_public {
supplementaryConfiguration.PublicAccessBlockConfiguration {
blockPublicAcls == true
blockPublicPolicy == true
restrictPublicBuckets == true
ignorePublicAcls == true
}
}
</pre><div style="text-align: left;">The rules are evaluated in order, evaluation continues regardless the result of previous rule.<br />PublicAccessBlockConfiguration block has conditions separated by new line, which implies AND<br />Please note the first rule name is being used as condition in the second rule</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div>- when bucket with www prefix is being evaluated, the result is not_applicable for both conditions.</div><div>- when bucket with public blocking enabled is being evaluated, the result is compliant for both conditions</div><div>- when bucket without public blocking enabled is being evaluated, 1st rule result is not_compliant, 2nd rule result is not_applicable. effective result is not_compliant</div><div><br /></div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-19850256233539203292019-02-01T21:37:00.001+11:002020-05-10T23:26:15.884+10:00Send Docker container log to SplunkDocker engine has Splunk logging driver to send container logs to Splunk via HEC(http event collector. It is easy to setup, however it could suffer data loss if HEC is down. That is the advantage of file based data ingestion which can retry and resume even splunk service is down for long period of time. The default Docker logging driver is json-file, there is no problem for Splunk agent to read the file, however how could you set index for different application, since the container id is random so the file path is random. The trick to use jounald driver and use rsyslog rules to read the jounald log and write to different file names based on any docker label.<br />
<br />
<br />
<b>Overview:</b><br />
steps included:<br />
- enable persistent journald storage<br />
- create rsyslog rule to read journald and write to json log file,file name depends on docker_appnane<br />
<br />
remaining steps to be achieved by other Ansible roles<br />
- docker container need to set log driver to journald and expose label docker-appname e.g<br />
docker run --log-driver=journald \<br />
--log-opt labels=docker-appname \<br />
--label docker-appname=mulesoft \<br />
<br />
- Splunk UF read /var/log/docker-{{docker_appname}}.log and forward to splunk cloud<br />
- logrorate rule to rotate /var/log/docker-{{docker_appname}}.log<br />
<br />
Rsyslog rule in RHEL7<br />
<pre >#imjournal module is loaded in main syslogd.conf
$IMJournalStateFile imjournal.state
$imjournalRatelimitInterval 300
$imjournalRatelimitBurst 30000
module(load="mmjsonparse")
action(type="mmjsonparse")
#output all json fileds and remove redundant last msg field
#template(name="jsonformat" type="string" string="%$!all-json:R,ERE,1,FIELD:(.*), (\"msg\":.*)--end% }\n")
template(name="jsonformat" type="string" string="%$!all-json%\n")
if ($!DOCKER_APPNAME == "{{docker_appname}}") then {
action(type="omfile" file="/var/log/docker-{{docker_appname}}.log" template="jsonformat")
stop
}
</pre><br />
Splunk customized source type to be set in Heavy forwarder or Indexer(universal forwarder doesn't support sourcetype defination)<br />
<br />
props.conf<br />
<pre >[json_realtime_timestamp]
KV_MODE = json
MAX_TIMESTAMP_LOOKAHEAD = 16
NO_BINARY_CHECK = 1
SHOULD_LINEMERGE = false
TIME_FORMAT = %s%6N
TIME_PREFIX = "_SOURCE_REALTIME_TIMESTAMP":\s*"
pulldown_type = 1
TZ=UTC
</pre><br />
inputs.conf in universal forwarder in Docker host<br />
<pre >[monitor:///var/log/docker-mulesoft.log]
disabled = true
sourcetype=json_realtime_timestamp
index = mulesoft
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-69975573097494457302018-07-18T23:30:00.000+10:002018-08-29T22:21:55.610+10:00Python script to generate Ansible ini inventory file from csv fileAnsible in memory inventory file created by add_host is often used in AWS EC2 provisioning. Inventory file can be generated easily,however it has drawback. Because it is in memory, all server post build tasks have to be in one big playbook. Which means it is not easy to re-run failed tasks if there is failure and existing post build playbooks can't be reused.<br />
<br />
I created a Python script to generate a temporary inventory file from csv file used in EC2 provisioning. The inventory file can be used in multiple post build playbooks. The file name is static, however it will not be overwritten,if you set concurrent build limit to 1 in CI/CD server.<br />
Some AWS EC2 instances in my company need static hostname The ip field will be changed automatically with the EC2 private IP return right after provisioning and and there is a playbook to create host record in infoblox. the group are Ansible group vars,multipe groups are separated by semicolon and the order is important,vars in last group will take precedence<br />
<b>The csv file</b><br />
<pre class="brush:[ruby];">name,ip,group,zone,env
awselk1,,elasticsearch;elasticsearch-master,2a,prod
awselk2,,elasticsearch;elasticsearch-data,2a,prod
</pre><br />
<b>The script</b><br />
<pre class="brush:[ruby];">#!/usr/bin/python
# Takes a file CSV file "xxx.csv" and outputs xxx.ini for Ansible host inventory data
import csv
import sys
import os
if len(sys.argv) <= 1:
print "Usage:" +sys.argv[0]+" input-filename"
sys.exit(1)
net_dn = {'prod':'prod.example.com', 'preprod':'preprod.example.com',
'test':'test.example.com', 'dev':'dev.example.com'}
groups = []
envs = set()
hosts_ini = {}
csvname = sys.argv[1]
scriptpath = os.path.dirname(sys.argv[0])
ansible_ini = os.path.join(scriptpath, 'hosts-aws-tmp.ini')
lines = []
hosts_text = ''
with open(csvname) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
domain = net_dn[row['env'].strip()]
line = row['name'].strip()+'.'+domain
#lines.append(line)
envs.add(row['env'])
# support multiple groups separated by ;
for g in row['group'].strip().split(';'):
g = g.strip()
if (not g in groups):
groups.append(g)
hosts_ini.setdefault(g, []).append(line)
#groups=set(groups)
if ( len(envs) !=1 ):
print "ERROR: only single enviroment is supported!"
sys.exit(1)
env = list(envs)[0]
env_text = "["+env+":children]"+"\n"+"\n".join(groups)
vars_text = "\n\n["+env+":vars]"
vars_text += """
ansible_user=ansible
ansible_ssh_private_key_file=~/.ssh/id_rsa
ansible_become=true
ansible_become_user=root
ansible_become_method=sudo
ansible_gather_facts=no
"""
vars_text+="aws_env=aws-"+env+'\n'
#generate groups in order as input
for g in groups:
hosts_text+='\n['+g+']\n'
hosts_text+='\n'.join(hosts_ini[g])
hosts_text+='\n'
all_text = env_text+vars_text+hosts_text
print all_text
with open(ansible_ini,'w') as new_ini_file:
new_ini_file.write(all_text)
print "INFO:Generated Ansible host inventory file: " + ansible_ini
</pre><br />
<b>The Ansible inventory file generated</b><br />
<pre class="brush:[ruby];">[prod:children]
elasticsearch
elasticsearch-master
elasticsearch-data
[prod:vars]
ansible_user=ansible
ansible_ssh_private_key_file=~/.ssh/id_rsa
ansible_become=true
ansible_become_user=root
ansible_become_method=sudo
ansible_gather_facts=no
aws_env=aws-prod
[elasticsearch]
awselk1.prod.example.com
awselk2.prod.example.com
[elasticsearch-master]
awselk1.prod.example.com
[elasticsearch-data]
awselk2.prod.example.com
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-50772490921284780812018-07-11T22:58:00.002+10:002018-07-11T23:20:48.633+10:00Ansible - turn values in CSV file into list of dictonary<span style="font-size: small;"><span style="font-size: medium;">Ansible can load yaml values into Ansible variable easily, However I am still fan of plain CSV file, because it is easy to edit and has no strict format and repetitive of variable names.</span></span><br />
<span style="font-size: small;"><span style="font-size: medium;">How to convert csv into yaml? </span></span><br />
<span style="font-size: small;"><span style="font-size: medium;">I used to use Python script to archive this,actually Ansible can do this natively.</span></span><br />
<br />
<b>Given this csv file for AWS EC2 instances</b><br />
<br />
<pre class="brush:[python];">$ cat vars/aws/ec2data.csv
name,ip,zone,group,env
splunk01,10.1.1.1,2a,splunk,prod
splunk02,10.1.1.2,2b,splunk,prod
</pre><br />
<b>The playbook</b><br />
<br />
<pre class="brush:[python];">---
- hosts: localhost
connection: local
gather_facts: no
vars:
ec2data_file: vars/aws/ec2data.csv
tasks:
- name: reading {{ec2data_file}}
command: /usr/bin/awk -F',' '!/^#/ && !/^$/ && NR!=1 { print $1,$2,$4,$5}' {{ec2data_file}}
register: csvout
#turn ec2_host into list with default filter and append list of dictionary in each loop.
#split is Python function to split string,default delimeter is space
- name: turn csv output to list of dict
set_fact:
ec2_host: "{{ ec2_host|default([]) + [ { \
'name': item.split().0, \
'ip': item.split().1, \
'group':item.split().2, \
'env': item.split().3 } ] }}"
with_items: "{{csvout.stdout_lines}}"
- debug: msg="{{item.name}},{{item.ip}}" verbosity=1
with_items: "{{ ec2_host }}"
</pre><br />
<b>The result</b><br />
<pre class="brush:[python];">skipping: [localhost] => (item={'ip': u'10.1.1.1', 'group': u'splunk', 'name': u'splunk01', 'env': u'prod'})
skipping: [localhost] => (item={'ip': u'10.1.1.2', 'group': u'splunk', 'name': u'splunk02', 'env': u'prod'})
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-69891341125679806592014-10-30T22:04:00.000+11:002014-11-07T17:32:00.008+11:00Python script to run remote SSH commands with sudo permissionI created a Python script to run remote SSH command with sudo permission. Linux SSH command doesn’t support password as command option, you have to use expect script to connect to multiple servers for automation. plink tool in Windows support password as command option.<br />
The trick to accept sudo password is ‘-S’ option in sudo, which accept sudo password piped from stdin.It seems to be safe, I turned on debug and I couldn’t see the password recorded in secure/messages logs.<br />
There are two versions of the script: the command line one and the class/module one.<br />
<h4><b>The command line version.</b></h4>if the clear text password is an concern, you can wrap the script by getpasswd module in Python,which read password from stdin.Read password once and apply the password to multiple servers.<br />
<pre class="brush:[python];">[root@~]# ./pyssh.py -s server1 -u admin -p Passwd123 date
Thu Oct 30 15:36:27 EST 2014
#'service sshd status' command ran successfully with sudo enabled '-t'
[root@~]# ./pyssh.py -t -s server1 -u admin -p Passwd123 'service sshd status'
openssh-daemon (pid 15686) is running...
#!/usr/bin/env python
import sys
import paramiko
import argparse
import socket
parser = argparse.ArgumentParser()
parser.add_argument("-s", "--servername", help="hostname or IP", required=True)
parser.add_argument("-P", "--port", help="ssh port default=22", default=22)
parser.add_argument("-t", "--sudo", help="enable sudo,sudo password will use the value of --password",action='store_true')
parser.add_argument("-u","--username",help="username",required=True)
parser.add_argument("-p","--password",help="password",required=True)
parser.add_argument("cmd",help="command to run")
args=parser.parse_args()
host = args.servername
port = args.port
user = args.username
password = args.password
cmd = args.cmd
if args.sudo:
fullcmd="echo " + password + " | sudo -S -p '' " + cmd
else:
fullcmd=cmd
#if __name__ == "__main__":
client = paramiko.SSHClient()
#Don't use host key auto add policy for production servers
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.load_system_host_keys()
try:
client.connect(host,port,user,password)
transport=client.get_transport()
except (socket.error,paramiko.AuthenticationException) as message:
print "ERROR: SSH connection to "+host+" failed: " +str(message)
sys.exit(1)
session=transport.open_session()
session.set_combine_stderr(True)
if args.sudo:
session.get_pty()
session.exec_command(fullcmd)
stdout = session.makefile('rb', -1)
print stdout.read()
transport.close()
client.close() </pre><h4>The class version</h4>The class version allow multiple commands to run in an existing SSH transport,which is more efficient.To use the class,copy pyssh.sh to a folder and create a new script to import the class 'from pyssh import PySSH',then reference the code in MAIN section without if statement.<br />
<pre class="brush:[python];">#!/usr/bin/env python
import sys
import socket
import paramiko
#=================================
# Class: PySSH
#=================================
class PySSH(object):
def __init__ (self):
self.ssh = None
self.transport = None
def disconnect (self):
if self.transport is not None:
self.transport.close()
if self.ssh is not None:
self.ssh.close()
def connect(self,hostname,username,password,port=22):
self.hostname = hostname
self.username = username
self.password = password
self.ssh = paramiko.SSHClient()
#Don't use host key auto add policy for production servers
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.ssh.load_system_host_keys()
try:
self.ssh.connect(hostname,port,username,password)
self.transport=self.ssh.get_transport()
except (socket.error,paramiko.AuthenticationException) as message:
print "ERROR: SSH connection to "+self.hostname+" failed: " +str(message)
sys.exit(1)
return self.transport is not None
def runcmd(self,cmd,sudoenabled=False):
if sudoenabled:
fullcmd="echo " + self.password + " | sudo -S -p '' " + cmd
else:
fullcmd=cmd
if self.transport is None:
return "ERROR: connection was not established"
session=self.transport.open_session()
session.set_combine_stderr(True)
#print "fullcmd ==== "+fullcmd
if sudoenabled:
session.get_pty()
session.exec_command(fullcmd)
stdout = session.makefile('rb', -1)
#print stdout.read()
output=stdout.read()
session.close()
return output
#===========================================
# MAIN
#===========================================
if __name__ == '__main__':
hostname = 'server1'
username = 'admin'
password = 'password123'
ssh = PySSH()
ssh.connect(hostname,username,password)
output=ssh.runcmd('date')
print output
output=ssh.runcmd('service sshd status',True)
print output
ssh.disconnect()
</pre><br />
<br />
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-47656902045253401282014-09-05T23:02:00.002+10:002014-09-18T22:18:21.590+10:00Build Puppet module to use Hiera lookupPuppet can use Hiera to look up data. This helps you disentangle site-specific data from Puppet code, for easier code re-use and easier management of data that needs to differ across your node population<br />
<br />
One typical example is IP address and NTP/DNS servers, the IP address is unique for each server and NTP/DNS is global. I built a linux-network test module to demonstrate the usage of Hiera<br />
Hiera supports yaml and Json as backend by default, however you can write your custom backend using Hiera API.<br />
<br />
Define datadir in hiera.yaml<br />
<pre class="brush:[ruby];">[root@server1 modules]# cat /etc/puppetlabs/puppet/hiera.yaml
---
:backends:
- yaml
:hierarchy:
- defaults
- "%{clientcert}"
- "%{environment}"
- global
:yaml:
# datadir is empty here, so hiera uses its defaults:
# - /var/lib/hiera on *nix
# - %CommonAppData%\PuppetLabs\hiera\var on Windows
# When specifying a datadir, make sure the directory exists.
:datadir: /etc/puppetlabs/puppet/hieradata
</pre><br />
Set all values in YAML file instead of manifest file<br />
You can also add class name in YAML file, then assign class to node with hiera_include<br />
<pre class="brush:[ruby];">[root@server1 modules]# cat /etc/puppetlabs/puppet/hieradata/global.yaml
---
#
# ntp.conf
ntpservers: [10.1.1.11, 10.1.1.12]
#resolv.conf
domainname: example.com
searchdomain: [example1.com, example2.com]
nameservers: [10.1.1.13, 10.1.1.14]
[root@server1 modules]# cat /etc/puppetlabs/puppet/hieradata/server1.example.com.yaml
eth1:
device: eth1
ipaddr: 172.16.1.2
netmask: 255.255.255.0
routes: ['192.168.1.0/24 via 172.16.1.254', '192.168.2.0/24 via 172.16.1.254']
gateway: 172.16.1.254
eth3:
device: eth3
ipaddr: 172.16.1.3
netmask: 255.255.255.0
#routes: ['192.168.1.0/24 via 172.16.1.254', '192.168.2.0/24 via 172.16.1.254']
</pre>Execute the whole class or a function of the class in site.pp, the codes in site.pp become universal.<br />
The site.pp manifest file is just generic code<br />
<pre class="brush:[ruby];">[root@server1 modules]# cat /etc/puppetlabs/puppet/manifests/site.pp
node "server1" {
include "linux-network"
}
node "server2" {
linux-network::setinterface { 'eth1': }
}
</pre>linux-network module manifest files<br />
<pre class="brush:[ruby];">[root@server1 modules]# cat ./linux-network/manifests/init.pp
class linux-network {
linux-network::setinterface { 'eth1': ; 'eth3': }
linux-network::setroute { 'eth1': ; 'eth3':}
linux-network::setconf_ntp {'ntp.conf':}
linux-network::setconf_resolv {'resolv.conf':}
}
[root@server1 modules]# cat ./linux-network/manifests/setconf_ntp.pp
define linux-network::setconf_ntp ( ) {
$ntpservers=hiera_array('ntpservers')
file {"/etc/ntp.conf":
ensure => present,
owner => root,
mode => 644,
content => template("${module_name}/ntp.conf.erb")
}
}
[root@server1 modules]# cat ./linux-network/manifests/setconf_resolv.pp
define linux-network::setconf_resolv ( ) {
$domainname=hiera('domainname')
$searchdomain=hiera_array('searchdomain')
$nameservers=hiera_array('nameservers')
file {"/etc/resolv.conf":
ensure => present,
owner => root,
mode => 644,
content => template("${module_name}/resolv.conf.erb")
}
}
[root@server1 modules]# cat ./linux-network/manifests/setinterface.pp
define linux-network::setinterface ( ) {
$device=$title
$eth=hiera($device)
$ipaddr=$eth['ipaddr']
$netmask=$eth['netmask']
$gateway=$eth['gateway']
file {"/etc/sysconfig/network-scripts/ifcfg-$device":
ensure => present,
owner => root,
mode => 644,
content => template("${module_name}/ifcfg.erb")
}
}
[root@server1 modules]# cat ./linux-network/manifests/setroute.pp
define linux-network::setroute ( ) {
$device=$title
$eth=hiera($device)
$routes=$eth['routes']
file {"/etc/sysconfig/network-scripts/route-$device":
ensure => present,
owner => root,
mode => 644,
content => template("${module_name}/route.erb")
}
}
</pre>linux-network module template files<br />
<pre class="brush:[ruby];">[root@server1 modules]# cat ./linux-network/templates/ifcfg.erb
DEVICE=<%=@device %>
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
IPADDR=<%=@ipaddr%>
NETMASK=<%=@netmask%>
<%- if @gateway =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/ -%>
GATEWAY=<%=@gateway %>
<%- end -%>
[root@server1 modules]# cat ./linux-network/templates/ntp.conf.erb
tinker panic 0
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
#
<%- @ntpservers.each do |x| -%>
server <%= x %>
<%- end -%>
driftfile /var/lib/ntp/drift
[root@server1 modules]# cat ./linux-network/templates/resolv.conf.erb
#
# resolver configuration file...
#
options timeout:1 attempts:8 rotate
domain <%=@domainname %>
<%- if !@searchdomain.empty? -%>
search <%=@domainname -%> <%= @searchdomain.join(' ') %>
<%- end -%>
<%- @nameservers.each do | x | -%>
nameserver <%= x %>
<%- end -%>
[root@server1 modules]# cat ./linux-network/templates/route.erb
<%- if defined?(@routes) -%>
<%- @routes.each do | x | -%>
<%=x %>
<%- end -%>
<%- end -%>
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-39302043790089485322014-03-13T17:14:00.002+11:002014-03-13T17:14:49.574+11:00Setup SAN Boot for RHEL 6.x using native multipath on EMC storage<b>Requirements:</b><br />
1) RHEL 6.x (most apply to RHEL 5.x too, RHEL 5.x use mkinitrd instead of Dracut and the /etc/multipath.conf is slightly different refer to Red Hat KB in reference section)<br />
2) EMC storage was setup with Active/Active (ALUA)<br />
3) Boot LUN was presented with single path for initial install<br />
<br />
<br />
<b>Procedures:</b><br />
<br />
1. Server boots up after initial install<br />
2. Login to server as root to enable multipath<br />
[root@server1]#mpathconf --enable –-with_multipathd y<br />
3. Edit /etc/multipath.conf and make sure it only contains following valid parameters<br />
<br />
<pre>blacklist {
}
defaults {
user_friendly_names yes
}
devices {
device {
vendor "DGC"
product ".*"
product_blacklist "LUNZ"
hardware_handler "1 alua"
path_checker directio
prio alua
}
}
</pre>
4.Find out the logical path the root disk is mapped<br />
[root@server1]#multipath –v3 <br />
It should be /dev/mapper/mpatha<br />
<br />
5. Create initramfs with multipath module<br />
[root@server1]#dracut --force -–add multipath<br />
<br />
6. Make sure multipath.conf is included in initrd image<br />
<pre>[root@server1]#lsinitrd /boot/initramfs-*.x86_64.img | grep multipath.conf
-rw-r--r-- 1 root root 2525 Feb 27 13:31 etc/multipath.conf
</pre>
7. Modify the /boot/grub/device.map and change<br />
<pre> (hd0) /dev/sda to
(hd0) /dev/mapper/mpatha
</pre>
This is assuming the boot disk is on /dev/mapper/mpatha as verified in step 2 above.<br />
<br />
8. Reboot the server.<br />
<br />
9. Verify multipath, check hwhandler='1 alua' and member disk sda for mpatha<br />
<pre>[root@server1]#multipath –ll
mpatha (3600601609973310067eb1e1ed69ae311) dm-0 DGC,VRAID
size=150G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='round-robin 0' prio=10 status=enabled
|- 1:0:0:0 sda 8:0 active ready running
10. Ask storage administrator to enable other paths for boot LUN.
11. Reboot server again after multipath is aenabled in storage too
12. Login server to verify all paths, check hwhandler='1 alua' prio>0
if hwhandler='1 emc' or prio=0 means PNR mode
[root@server1]#multipath -ll
mpatha (3600601609973310067eb1e1ed69ae311) dm-0 DGC,VRAID
size=150G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=130 status=active
| |- 1:0:1:0 sdd 8:48 active ready running
| `- 2:0:1:0 sdj 8:144 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 1:0:0:0 sda 8:0 active ready running
`- 2:0:0:0 sdg 8:96 active ready running
mpathb (360060160997331009fd6e124d69ae311) dm-1 DGC,VRAID
size=800G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=130 status=active
| |- 1:0:0:1 sdb 8:16 active ready running
| `- 2:0:0:1 sdh 8:112 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 1:0:1:1 sde 8:64 active ready running
`- 2:0:1:1 sdk 8:160 active ready running
</pre>
13. Partition other LUNS using fdisk command as normal, but use logical path /dev/mapper/mpathb etc (partition will be created as /dev/mapper/mpathbp1 instead of /dev/mapper/mpathb1<br />
NOTE: any change to /etc/multipath.conf requires re-create initramfs ( dracut --force -–add multipath) and a reboot, because the boot LUN is on SAN, if boot LUN is local disk, change to /etc/multipath.conf only requires multipathd restartUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-76671778583495987332014-03-12T17:24:00.000+11:002020-05-10T23:29:29.413+10:00Automate Server deployment with AnsibleThere are many server automation applications in the market: puppet,chef,cfengine and salt. Ansible is relatively new, but I think it is better than puppet in server deployment automation tasks.<br />
1. Dependency packages<br />
Ansible depends on python, which is installed by default at least for Red Hat alike distributions<br />
Puppet depends on ruby, which is not installed by default.<br />
2. Agent <br />
Ansible is agentless, it rely on SSH<br />
Puppet need agent running in target server as a daemon.<br />
3. Security<br />
Ansible use SSH as transport method, so Username and password are required for each connection.(Ansible is smart enough to cache the SSH and sudo password, so it will be only prompted once for the first server)<br />
Puppet: agent is controlled by master server, if master server is compromised, all hosts can be brought down easily<br />
4. Setup<br />
Ansible is easy to setup, as there is no agent. Ansible server is easy to setup too, there are just python scripts. You can even run it without installing it. <br />
Puppet need packages installed in agent host or server, the agent certificate need to be signed before server can talk agent.<br />
Ansible use SSH TCP port 22, which is standard firewall port already opened in most infrastructure.<br />
Puppet use customized TCP port , typically 8139<br />
5. Command line mode<br />
Ansible supports command line mode for ad-hoc tasks, so you don’t need to write tasks definitions, just pass the command to ansbile such as return date for a number servers.<br />
ansbile myservers –k –K –u admin –m raw –a “date”<br />
<br />
The following example show a typical server deployment<br />
<pre >[root@centos1 post]# cat setup.yml
--- #ansible playbook use YAML syntax http://en.wikipedia.org/wiki/YAML
- hosts: server1 #It is a server or server group as defined in /etc/ansbile/hosts
user: admin
sudo: yes
vars_files:
- vars/settings.yml #global variables
- vars/{{ ansible_hostname }}.yml #server specific variable . ansible_hostname is variable, it is server1.yml for server1
tasks:
- name: yum
action: yum name=${item} state=present #install yum packages
with_items:
- kernel-devel-{{ ansible_kernel }}
- ed
- ksh
- ntp
- script: ./scripts/sshd.sh #- The script will insert 'UseDNS no' , - script is shorthand for - name: XX ,action: YY
- name: users | Delete users #delete users delusers is list if users defined in setting.yml
action: user name=$item state=absent
with_items: delusers
- name: ifcfg-eth0 | Configuration file #ansible template engine is Jinja2 http://jinja.pocoo.org/docs/
action: template src=./templates/ifcfg-eth0.j2 dest=/etc/sysconfig/network-scripts/ifcfg-eth0 owner=root group=root
- name: route-eth0 | Configuration file, /etc/sysconfig/network-scripts/route-eth0
action: template src=templates/route-eth0.j2 dest=/etc/sysconfig/network-scripts/route-eth0
- name: resolv.conf | Configuration file, /etc/resolv.conf
action: template src=templates/resolv.conf.j2 dest=/etc/resolv.conf
- name: ntpd | Configuration file, /etc/ntp.conf
action: template src=templates/ntp.conf.j2 dest=/etc/ntp.conf
notify:
- restart ntpd
- name: snmpd | Configuration file, /etc/snmp/snmpd.conf
action: copy src=files/snmpd.conf dest=/etc/snmp/snmpd.conf owner=root group=root mode=0644
notify:
- restart snmpd
- copy: src=files/clock dest=/etc/sysconfig/clock owner=root group=root mode=0644
- command: ln -fs /usr/share/zoneinfo/Australia/Sydney /etc/localtime
handlers:
- name: restart sshd
action: service name=sshd enabled=yes state=restarted
- name: restart ntpd
action: service name=ntpd enabled=yes state=restarted
- name: restart snmpd
action: service name=snmpd enabled=yes state=restarted
####----Global variables
[root@centos1 post]# cat vars/settings.yml
#
# ntp.conf
ntpservers: [10.1.1.1, 10.1.1.2]
#users to delete
delusers: [user1, user2]
#resolv.conf
domainname: .example.com
searchdomain: [example.com]
nameservers: [10.1.1.1, 10.1.1.2]
####----Server specific variable
[root@centos1 post]# cat vars/server1.yml
eth1:
device: eth1
ipaddr: 172.16.1.2
netmask: 255.255.255.0
routes: ['192.168.1.0/24 via 172.16.1.254', '192.168.2.0/24 via 172.16.1.254']
####----How the tempalate reference the variable
[root@centos1 post]# cat templates/resolv.conf.j2
#
# resolver configuration file...
#
options timeout:1 attempts:8 rotate
domain {{domainname}}
search {{domainname}} {{ searchdomain | join (' ') }}
{% for host in nameservers %}
nameserver {{host}}
{% endfor %}
[root@centos1 post]# cat templates/ifcfg-eth1.j2
DEVICE={{eth1.device}}
BOOTPROTO=static
ONBOOT=yes
USERCTL=no
IPADDR={{eth1.ipaddr}}
NETMASK={{eth1.netmask}}
{% if eth1.gateway is defined %}
GATEWAY={{eth1.gateway}}
{%endif%}
####----a separate playbook to create LVM and file system
[root@centos1 post]# cat setup-lvm.yml
---
- hosts: server1
user: admin
sudo: yes
gather_facts: no
vars:
mntp: /opt
vgname: vg01
pvname: /dev/sdb1
lv1: opt
tasks:
- script: ./scripts/disks.sh $pvname #a script to create LVM partion and create physical volume
- name: filesystem | Create pv,vg,lv and file systems
action: lvg vg=$vgname pvs=$pvname
#- name: filesystem | create lv
- lvol: vg=$vgname lv=$lv1 size=51196
# - name: filesystem | create fs
- filesystem: fstype=ext4 dev=/dev/${vgname}/${lv1}
#- name: filesytem | mount dir
- mount: name=${mntp} src=/dev/${vgname}/${lv1} dump=1 passno=2 fstype=ext4 state=mounted
</pre>How to run the playbook?<br />
<pre>[root@centos1 post]# ansible-playbook -k -K setup.yml
-k, --ask-pass ask for SSH password
-K, --ask-sudo-pass ask for sudo password</pre>Download all the files<br />
<a href="https://drive.google.com/file/d/0B-RHmV4ubtk8Y2wyazhZRS1pSVk/edit?usp=sharing">https://drive.google.com/file/d/0B-RHmV4ubtk8Y2wyazhZRS1pSVk/edit?usp=sharing</a><br />
<br />
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-35148046624622446682013-06-20T22:21:00.002+10:002013-06-26T21:16:52.756+10:00VMware PowerCLI: Map datastore name to LUN devicename.It is not obvious as it is thought to be to map datastore name to LUN devicename in native PowerCLI codes, <br />
The esxcli interface exposed to PowerCLI make it very easy.(Tested in ESXi 5.0)<br />
<pre class="brush:[perl];">PowerCLI>$esxcli=get-esxcli -vmhost esx01
PowerCLI>$esxcli.storage.vmfs.extent.list() | ft devicename,volumename -autosize
DeviceName VolumeName
---------- ----------
naa.600601605bc02e00007fb97cacbee211 datastore01
naa.600601605bc02e00fac8cd88acbee211 datastore02
</pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-91737383679604492532013-06-20T22:12:00.001+10:002013-06-20T22:14:22.978+10:00Script to automatically partition a new disk and create LVM PVIt is a very common task to create a single partition on whole disk and create LVM PV, How to automate it?<br />
<br />
fdisk doesn't support making partition in script mode, sfdisk can, but it is not as good as the powerful parted tool. parted can also optimize partition alignment automatically(parted -a optimal). <br />
<br />
<br />
<pre class="brush:[shell];">#!/bin/ksh
#Create a single primary partiton with whole disk size and create LVM PV on it
disk=$1
partno=1
if [[ -z $disk ]]; then
echo "Usage: $0 disk device name: e.g $0 /dev/sdb"
exit
fi
if [[ -e ${disk}${partno} ]]; then
echo "==> ${disk}${partno} already exist"
exit
fi
echo "==> Create MBR label"
parted -s $disk mklabel msdos
ncyl=$(parted $disk unit cyl print | sed -n 's/.*: \([0-9]*\)cyl/\1/p')
if [[ $ncyl != [0-9]* ]]; then
echo "disk $disk has invalid cylinders number: $ncyl"
exit
fi
echo "==> create primary parition $partno with $ncyl cylinders"
parted -a optimal $disk mkpart primary 0cyl ${ncyl}cyl
echo "==> set partition $partno to type: lvm "
parted $disk set $partno lvm on
partprobe > /dev/null 2>&1
echo "==> create PV ${disk}${partno} "
pvcreate ${disk}${partno}
</pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-91362248143426483932013-04-19T22:24:00.000+10:002013-04-19T22:36:01.386+10:00Understanding SysV-style Initscripts in Red Hat LinuxIt is often needed to write your own init start/stop script, the following is the minimum requirement for your script to behave as expected. The discussion is based on Red Hat Linux family, other distributions like Debian use LSB (Linux Standard Base Specification) Init Scripts.<br />
<h4>
Location of the script</h4>
/etc/init.d is the well known location, but actually /etc/rc.d/init.d is the real original location. Since /etc/init.d is a hard link to /etc/rc.d/init.d, it makes no difference.<br />
<h4>
Header of the script</h4>
It needs at least 3 lines. The shell script interpreter (/bin/sh, /bin/bash .. etc), the chkconfig header and script description<br />
<pre class="brush:[shell];">#!/bin/sh
# chkconfig: 345 56 10
# description: Startup/shutdown script for the Common UNIX </pre>
<br />
<h4>
Body of the script </h4>
Obviously, it need to accept parameter “start”, which /etc/rc3.d/S* will call on OS startup and accept parameter “stop”, which /etc/rc0.d/K* script will call on OS shutdown.<br />
The lockfile is often overlooked, it is used to check the existence of the daemon on OS shutdown, otherwise the stop action won’t be called. If you found an issue that a script started on OS startup but never stop properly on shutdown, you need to create lockfile. note: lockfile is not pidfile which contains PID of the process, lockfile is usually a blank file.<br />
<pre class="brush:[shell];">lockfile=/var/lock/subsys/$(basename $0)
case $1 in
start)
start
[ $? = 0 ] && touch $lockfile
;;
stop)
stop
[ $? = 0 ] && rf –f $lockfile
</pre>
<h4>
Others</h4>
It is recommended to import functions in /etc/rc.d/init.d/functions to use ‘daemon’ to startup your application or killproc to shutdown your application instead of reinventing the wheel.<br />
<br />
<h4>
LSB headers </h4>
You may see something like this in an init script.<br />
<pre class="brush:[shell];"> # Provides: boot_facility_1 [ boot_facility_2 ...]
# Required-Start: boot_facility_1 [ boot_facility_2 ...]
# Required-Stop: boot_facility_1 [ boot_facility_2 ...]
# Should-Start: boot_facility_1 [ boot_facility_2 ...]
# Should-Stop: boot_facility_1 [ boot_facility_2 ...]
# Default-Start: run_level_1 [ run_level_2 ...]
# Default-Stop: run_level_1 [ run_level_2 ...]
# Short-Description: short_description
# Description: multiline_description
</pre>
They are LSB(Linux Standard Base) headers, they are supported by default in Debian and SUSE Linux.<br />
Red Hat Linux supports this by additional package “redhat-lsb” and it is not installed by default, Be warned,50+ dependences need to installed as well.<br />
<h4>
Reference</h4>
<a href="http://refspecs.linuxfoundation.org/LSB_2.1.0/LSB-generic/LSB-generic/initscrcomconv.html">http://refspecs.linuxfoundation.org/LSB_2.1.0/LSB-generic/LSB-generic/initscrcomconv.html</a><br />
<br />
<a href="https://fedoraproject.org/wiki/Packaging:SysVInitScript?rd=Packaging/SysVInitScript">https://fedoraproject.org/wiki/Packaging:SysVInitScript?rd=Packaging/SysVInitScript</a><br />
<br />
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-83982804211981478092013-03-24T22:33:00.000+11:002013-03-25T00:02:07.964+11:00Configure multipath on Solaris 11 for IBM V7000 SAN storageIBM V7000 is not listed from command “mpathadm show mpath-support libmpscsi_vhci.so”, but it is still supported, Solaris 11 mpxio supports any third party storage device that is T10/T11 standards-compliant. <br />
Procedures to setup multipath<br />
<pre class="brush:[shell];">#Setup zoning in SAN switch
#Login to V7000 management UI to map Solaris host to the volume, select host type ‘TPGS’
#Rescan new SAN disks without rebooting
$cfgadm -o force_update -c configure cX (X is the port id as shown cfgadm -al)
#verify SAN disks are detected.
$echo|format
#create scsi_vhci.conf
#scsi_vhci.conf doesn’t need to customized, scsi-vhci-failover-override parameter is optional, IBM V7000 is detected as f_tpgs with the standard probe.
$cp /kernel/drv/scsi_vhci.conf /etc/driver/drv/scsi_vhci.conf
#Obtain the device path of the fc ports of a single HBA
$ls -l /dev/cfg
lrwxrwxrwx 1 root root 60 Feb 28 10:20 c4 -> ../../devices/pci@400/pci@2/pci@0/pci@8/SUNW,qlc@0/fp@0,0:fc
lrwxrwxrwx 1 root root 62 Feb 28 10:20 c5 -> ../../devices/pci@400/pci@2/pci@0/pci@8/SUNW,qlc@0,1/fp@0,0:fc
the path needed is the string between ./devices/ and fp@, so the paths are
/pci@400/pci@2/pci@0/pci@8/SUNW,qlc@0
/pci@400/pci@2/pci@0/pci@8/SUNW,qlc@0,1
#Create fp.conf
cp /kernel/drv/fp.conf /etc/driver/drv/fp.conf
#edit fp.conf to enable multipath for the two fc ports only
mpxio-disable="yes";
name="fp" parent="/pci@400/pci@2/pci@0/pci@8/SUNW,qlc@0" port=0 mpxio-disable="no";
name="fp" parent="/pci@400/pci@2/pci@0/pci@8/SUNW,qlc@0,1" port=0 mpxio-disable="no";
#run the command to enable multiple path on fc ports only, server will need to be rebooted.
$stmsboot –u –D fp
#verify
$ echo| format will show only a single disk
$stmsboot -L
non-STMS device name STMS device name
------------------------------------------------------------------
/dev/rdsk/c4t50050768024046D8d0 /dev/rdsk/c0t6005076802830163A000000000000005d0
/dev/rdsk/c4t50050768022046D9d0 /dev/rdsk/c0t6005076802830163A000000000000005d0
/dev/rdsk/c5t50050768022046D8d0 /dev/rdsk/c0t6005076802830163A000000000000005d0
/dev/rdsk/c5t50050768024046D9d0 /dev/rdsk/c0t6005076802830163A000000000000005d0
$mpathadm list lu
/dev/rdsk/c0t5000CCA0164251B8d0s2
Total Path Count: 1
Operational Path Count: 1
/dev/rdsk/c0t5000CCA01642CDDCd0s2
Total Path Count: 1
Operational Path Count: 1
/dev/rdsk/c0t6005076802830163A000000000000005d0s2
Total Path Count: 4
Operational Path Count: 4
$mpathadm show lu /dev/rdsk/c0t6005076802830163A000000000000005d0s2
#the disk is deteced as f_tpgs as shown in messages log
$grep f_ /var/adm/messages
Mar 21 13:56:46 dnmsovm1 scsi: [ID 583861 kern.info] ssd4 at scsi_vhci0: unit-address g6005076802830163a000000000000005: f_tpgs
</pre>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-7945624313262760772013-02-08T23:33:00.002+11:002013-03-25T00:03:32.716+11:00Monitor customized application in Windows by SNMP<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><br />
<!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style> <![endif]--> <br />
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US;">The native SNMP service<span style="mso-spacerun: yes;"> </span>in Windows can provide basic metrics like CPU, memory and disk etc, but it doesn’t have “extend” feature in net-snmp, which allows you run a script for application monitoring. Net-snmp can’t be used as replacement for Windows SNMP service because some </span><span lang="EN-AU">SNMP extension agent relies on it and known issue like HOST-RESOURCES MIB doesn’t work in net-snmp. </span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-AU"><span style="mso-spacerun: yes;"> </span>The good news is that you can have net-snmp co-exist with Windows SNMP, you can have nice features like extend ability, in the mean time, pass the other functions to native Windows SNMP service.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-AU">As of Net-SNMP 5.4, the Net-SNMP agent is able to load the Windows SNMP service extension DLLs by using the Net-SNMP winExtDLL extension. The extension requires the net-snmp binary to be native (32bit net-snmp extension won’t work in 64bit Windows).</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-AU">Net-snmp 64bit binary is hard to find, it seems only <a href="http://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.5-binaries/" target="_blank">net-snmp-5.5.0-2</a> has 64bit binary pre-compiled, you might need to compile yourself for other versions. </span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span lang="EN-AU"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--></span></div>
<br />
<div class="MsoNormal">
<span lang="EN-AU"><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style> <![endif]--> </span></div>
<h3>
<span lang="EN-AU"><div class="MsoNormal">
<span lang="EN-AU">Install net-snmp </span></div>
</span></h3>
<div class="MsoNormal">
<span lang="EN-AU"> </span></div>
<div class="MsoNormal">
<span lang="EN-AU">Run the net-snmp binary installer select “with Windows Extenstion” instead of standard agent, unselect “net-snmp trap service” and “Perl SNMP modules”, the default path is c:\usr</span></div>
<br />
<h3>
<span lang="EN-AU"><div class="MsoNormal">
<span lang="EN-AU">Configure net-snmp</span></div>
</span></h3>
<div class="MsoNormal">
<span lang="EN-AU"> </span></div>
<h4>
<span lang="EN-AU"><div class="MsoNormal">
<span lang="EN-AU">Register net-snmp as Windows service</span></div>
</span></h4>
<div class="MsoNormal">
<span lang="EN-AU"> </span></div>
<div class="MsoNormal">
<span lang="EN-AU">Edit c:\usr\registeragent.bat to disable modules conflicting to Windows<span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>by adding parameter.</span></div>
<div class="MsoNormal">
<span lang="EN-AU">“-I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,snmp_mib”</span></div>
<div class="MsoNormal">
<span lang="EN-AU">(Note: if system_mib is also disabled, SNMPv2-MIB::sysuptime won’t report correct time)</span></div>
<div class="MsoNormal">
<span lang="EN-AU">Run c:\usr\registeragent.bat</span></div>
<br />
<h4>
<span lang="EN-AU"><div class="MsoNormal">
<span lang="EN-AU">Edit C:\usr\etc\snmp\snmpd.conf</span></div>
</span></h4>
<pre>rocommunity public 192.168.1.10
#Test extend feature to execute a script, the script path must use Unix style ‘/’
extend userscript c:/temp/test1.bat</pre>
<h4>
<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--> </h4>
<h4 class="MsoNormal">
<span lang="EN-AU">Start Windows service “net-snmp agent”(Native SNMP service must be stopped)</span></h4>
<h3 class="MsoNormal">
<span lang="EN-AU">Test </span></h3>
<br />
<pre>#Test standard SNMP metrics, the HOST-RESOURCES-MIB is provided by native SNMP service, not net-snmp
[root@zabbix]#/usr/bin/snmpwalk -v 2c -c public 192.168.1.20 HOST-RESOURCES-MIB::hrSystemUptime
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (640892116) 74 days, 4:15:21.16
#The extend feature is provided by net-snmp, Execute the script by snmpwalk
[root@zabbix]#/usr/bin/snmpwalk -v 2c -Ov -c public 192.168.1.20 'NET-SNMP-EXTEND-MIB::nsExtendOutLine."userscript"'
STRING: web-time=80
STRING: web-status=[ok]</pre>
<pre><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>ZH-CN</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]-->
</pre>
<h3 class="MsoNormal">
<span style="mso-ansi-language: EN-US;">Troubleshooting </span></h3>
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US;">C:\usr\log\snmpd.log</span></div>
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US;">Check which Windows
modules loaded, start snmpd in command line with debugging “WinExtDLL”</span></div>
<span lang="EN-AU">Snmpd.exe -I-udp,udpTable,tcp,tcpTable,icmp,ip,interfaces,snmp_mib<span style="mso-spacerun: yes;"> </span>-DwinExtDLL</span><span lang="EN-AU"> </span>
<br />
<h3 class="MsoNormal">
<span style="mso-ansi-language: EN-US;">Reference:</span></h3>
<div class="MsoNormal">
<span lang="EN-AU"><a href="http://net-snmp.sourceforge.net/docs/README.win32.html"><span lang="EN-US" style="mso-ansi-language: EN-US;">http://net-snmp.sourceforge.net/docs/README.win32.html</span></a></span><span style="mso-ansi-language: EN-US;"></span></div>
<pre><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]--> </pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-83959026672448426362013-02-07T22:59:00.002+11:002013-02-07T23:00:52.492+11:00Shell script to check Oracle Tablespace usage<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><br />
<!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style> <![endif]--> <br />
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US;">I searched a shell script to check Oracle Tablespace usage, most scripts returned use complex SQL statements and they don’t report usage accurately, because auto-extend or multiple data files was not taken into account for calculation. Actually, there is a built-in view “<b>dba_tablespace_usage_metrics</b>” for the purpose starting from Oracle 10g. </span><br />
<span style="mso-ansi-language: EN-US;">The following script check the Oracle database availability or tablespace usage and measure the response time.The scripts output “key=value” format, which can be easily discovered by <a href="http://honglus.blogspot.com.au/2013/01/zabbix-monitor-customized-applications.html" target="_blank">LLD in Zabbix</a>.(with LLD, Zabbix can dynamically discover any number of items to monitor without adding the items manually )</span></div>
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--></span></div>
<br />
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US;"><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style> <![endif]--> </span></div>
<div class="MsoNormal">
<h4>
<span style="mso-ansi-language: EN-US;">Script sample output</span></h4>
</div>
<pre>db-time= 71
db-status=[OK]: Name:SYSAUX SizeMB:1024 Used%: 73 ; Name:SYSTEM SizeMB:1024 Used%: 72 ; Name:USERS SizeMB:5 Used%: 20 ; Name:TEMP SizeMB:2048 Used%: 2 ; Name:UNDOTBS1 SizeMB:2048 Used%: 1 ; 8 rows selected.
</pre>
<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><br />
<!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style> <![endif]--> <br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US;">The Oracle login in the script should have permission to read the view or have “select_catalog_role” role granted.</span></div>
<h4 class="MsoNormal">
<span style="mso-ansi-language: EN-US;">Script detail</span></h4>
<h4 class="MsoNormal">
<span style="mso-ansi-language: EN-US;">
</span></h4>
<pre class="brush:[shell];">#!/bin/ksh
function checkdb {
TNSNAME=$1
OUSER=$2
OPASS=$3
ORACLE_HOME=${ORACLE_HOME:=/u01/app/oracle/product/11.2.0/client_1}
export ORACLE_HOME
t1="$(date +%s%N)"
rt=$($ORACLE_HOME/bin/sqlplus -S ${OUSER}/${OPASS}@${TNSNAME}<< _END
set heading off
set linesize 200
select
'Name:'|| tablespace_name,
'SizeMB:'||round(TABLESPACE_SIZE*8/1024)||' Used%:',
round(used_percent),
';'
from
dba_tablespace_usage_metrics
order by 3 desc;
exit;
_END)
t2="$(date +%s%N)"
echo "db-time= $((($t2 - $t1)/1000000))"
#remove blank lines,ignore UNDOTBS,get the numeric value by removing tab and spaces
tbpct=$(echo "$rt" | egrep -v '^$|UNDOTBS' | head -1 | sed 's/.*Used%:\(.*\);/\1/' | sed 's/[ \t]*//g')
#Critical condition: thresh-hold > 95 or non-numeric value returned
if [ $tbpct -gt 95 ] || [[ "$tbpct" != +(\d) ]] ; then
echo "db-status=[CRITICAL]:" $rt
else
echo "db-status=[OK]:" $rt
fi
}
</pre>
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-41988852659883114112013-01-29T23:11:00.000+11:002013-01-29T23:13:05.161+11:00Zabbix: configure SNMP traps – a simpler approach<!--[if !mso]> <style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style> <![endif]--><br />
<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:宋体;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style> <![endif]--> <br />
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<span lang="EN-AU">Zabbix has well documented guide to configure SNMP traps, I followed the guide and gave it up after facing the challenge to install additional software SNMPTT or recompile SNMPD to include “--enable-embedded-perl” (it seems snmpd In RHEL 6 is not enabled by default)</span></div>
<div class="MsoNormal">
<span lang="EN-AU">I found an easier way to use item type “Zabbix trapper” rather than “snmp trap”, The “Zabbix trapper” receive data from zabbix_sender command, which was triggered by traphandle in /etc/snmp/snmptrapd.conf, it is the single configured file need to be configured, unlike “snmp trap” type which require many configuration files:zabbix_server.conf,snmptt.conf,snmptrapd.conf,snmptt.ini,snmptt.conf</span></div>
<h4 class="MsoNormal">
<span lang="EN-AU">Pros and Cons compared to the official “snmp trap”</span></h4>
<div class="MsoNormal">
<span lang="EN-AU">- Pros:</span></div>
<ul>
<li><span lang="EN-AU">Easier to implement, no need to install or compile additional software.</span></li>
</ul>
<ul>
<li><span lang="EN-AU">You don’t need to add host resource to Zabbix, you can setup a catch-all trapper in “Zabbix Server”,<span style="mso-spacerun: yes;"> </span>real problematic host can be identified in the SNMP values.</span></li>
</ul>
<ul>
<li><span lang="EN-AU">Distributed monitoring, you can setup many snmptrapd receivers.</span></li>
</ul>
<ul>
<li><span lang="EN-AU">Only one way connection is required, that is port 162 from snmp host to snmptrapd host and port 10051 from snmptrapd host to Zabbix Server. Zabbix server doesn’t need to query snmp host on port 161. </span></li>
</ul>
<div class="MsoNormal">
<span lang="EN-AU"><span style="mso-spacerun: yes;"> </span>For me, I only use SNMP trap to receive alarms of hardware fault of servers/storage etc, I don’t want to pull the hardware health metrics and define the threshold again, it is not needed and not sufficient, because hardware vendor already have all necessary hardware health metrics and<span style="mso-spacerun: yes;"> </span>threshhod, you just need to receive the alarms through the management interface (SUN iLOM/DELL DRAC/IBM RSA ).</span></div>
<div class="MsoNormal">
<span lang="EN-AU">- Cons:</span></div>
<div class="MsoNormal">
<span lang="EN-AU">Maybe performance? The traphandler is a simple Perl script to read SNMP data via STDIN and connect to Zabbix server, I don’t see performance implication of it.</span></div>
<h4 class="MsoNormal">
<span lang="EN-AU">Install snmptrapd and configure snmptrapd(it doesn’t need to be in Zabbix server)</span></h4>
<pre class="brush:[perl];">
[root@zabbix~]# cat /etc/snmp/snmptrapd.conf
authCommunity log,execute public
traphandle default /opt/zabbix/bin/user_trap_receiver.pl
[root@zabbix ~]# cat /opt/zabbix/bin/user_trap_receiver.pl
#!/usr/bin/perl
$zserver='192.168.1.10';
$tserver='Zabbix server';
$trapkey='allsnmptrap';
$zsender='/usr/local/bin/zabbix_sender';
$hostname = <STDIN>;
chomp($hostname);
$ipaddress = <STDIN>;
chomp($ipaddress);
$output="Trap received from Host: $hostname ($ipaddress)\n";
while(<STDIN>) {
$output.=$_;
}
system ( "$zsender -z \"$zserver\" -s \"$tserver\" -k \"$trapkey\" -o \'$output\' ");
</pre>
<br />
<div class="MsoNormal">
</div>
<h4 class="MsoNormal">
<span lang="EN-AU">Create the catch-all “zabbix trapper” item in any host, for example in Zabbix Server.</span></h4>
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-no-proof: yes;"></span></div>
<div class="MsoNormal">
<span lang="EN-AU"><img alt="" src="data:image/png;base64,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" /> </span></div>
<h4 class="MsoNormal">
<span lang="EN-AU">Create trigger for allsnmptrap item</span></h4>
<div class="MsoNormal">
<span lang="EN-AU"> It is generic trigger based on time, basically it is trigged for any data received and stay in alarm state until 2 days later or manually make it cleared(by edit trigger expression). You may need to customize the trigger to action on string search result etc. (NOTE: new alarm won’t pop up if trigger is already in alarm state, so you need to make it to health state in order to receive new alarm)</span></div>
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-no-proof: yes;"><br />
</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAl4AAAGPCAIAAAACyUnGAAAgAElEQVR4nOydd1gbV773yd292eTmbjZ3b/lj7953s5u9STaxUx1jp9jGwU5sxzW4YJrBDWMbXHA3NsX0XkRvAkTvHQSSkBBdFAmBkJBEbxIICZBQ/b1/DJYBl2DH7Sbn83wfnpkzp82M5nznnDnDGAACgUAgEIhFGLzoCiAQCAQC8XKBrBGBQCAQiCUga0QgEAgEYgnIGhG/NOZUc0U9JfmdRYXs4gersziPlced5AHA0OAQs4PZ3t7e1trW1trW0d7RyersaO/oaO9gsVjtbe0dHR1CgRAAZDIZi8ViMVkPhclis9kKhQIAeDwek/nwqEwWs4M5Njr2Qo8TAoF4KMgaEb80eif5Bh7/bBBiYBD0EIUZGLgauFI8AACfgPf29E5JTikqKCouLCYkE8KCwwgphKSkpPCw8MyMzJCgkNDgUABob2+/ffN2dER0WHBYeGh4WHBYRFhEeFh4WHAYLhSHC8GFh4bfunmrv78fALy9vAP9A8PDwkODQkODQsPDwsNCwnChOCx+BC7C9bZrXk7eCz5SCATiITxba2R1DFNIPADIzWzv6R5/pmW9EApzmeNjssUhdbWClqb+xSFCvjgztfX51utF0i5px/XinmKGHdMdqf2pK48vEAt/G/L6J61ro8ZiFytyLDZoJNRnOGBPzwGDOAOvGj8ASElOKSsuUylVU5NTo8OjPd09tTW1kimJXCFnNDM0ak0DvSE6MhoA2lrbYiJj2prbhHwhm8nuE/QxmhkdrR2CXkF3ZzeXwxXyhcn45N7eXq1GGxsVy+3hdnZ0ToxNjA2Ptbe0C3oFnczO1ubWfmE/p4tTQ67Jy31O1vgzL8Os9LZenuhpVSYpKampqWmFkaurq3Nycp5W0U8dBoOBx+NXGHl0dDQwMPCp14FGo8XHxz/1bB9GeXl5UVHRCiOz2ezo6OhnWp9HMzU5l5/T8WRpl1tjbQ2/orQbW1YqNfHR9TMz8yvJqLSI3VjftywwKaHxumMhAJCruP3CyftTFeWzWpsHHqvGBQUFR48ebWtrA4DZ2dnjx4+7uLisPLlGozl79uyVK1ceEaeXJ3K0z73uWIjJ9WapaGL2gTHNTBKZ7cOLQzxdKnGBNYtDRoanqyo4K6/hC0en011ov3Cu7Ry2Spmg2NBsaiZqHp1KD1fGzRrMAgC8EF85Vvnz65MgTNhM2bzy+AKx8NWQN96v/+gm30Wv6723rvBuUCR0jQ4OdpsaRBt41/gBACGZUJhXKJPKxCLx4MBge2s7pYoyMjwyLZ3uaO+Qz8mpFCpmje1t7VHhUQ21DdOSaV4PTzYja6xv7GjrkExJhHzhyMiIWCTOy83j8XgatQafgBdPink9vLm5uempaR6HNymenBJPjQyMyOVyPo/fye7Mzc593EPB6Rq7cDqnjsZ/rFQ/eRneTydzJCezHVuuruwZGpA8blUfCB6PP378OJvNxlZHRka8vb0XR3B3dzcxMbG1tcVWm5qajhw58rju2NzYf/lc/pXzBd3sMQBIiKmfka2oEXssWltbLSwsiouLsVUPD4/FNQeA8vJyExMTExMToVAIAGKx+Nq1az4+PisvYnZ29siRIyYmJocPH7a0tMRya2lpWRynvb195V71MykrK7OwsKBSqQDg5eV18OBBrEoeHh5YBDweb2JicuDAgZmZGQDg8/mnT5+OjIx8grJaGvvPncq+drHg6oUCydTck1WY1zNxaO/j3TecO7fQ7i23xogQqodzBbasVKr374odH59ZSY63rhYnxjYuC8xIZdy5Vf6IVFcvFqQntzwiwv1cvnzZwMAgNzcXAKanpw0MDP72t7+tPLlSqTQwMHjrrbceEUcsmi3MY5YWsstLuspLur7fhGN2DD8wpq11Gps1ujgkyJccF1m38vq8hGh12t/l/O6fsv4JWw3mBRuEGYRyQx83H9N6U/cu959fn9T+1L30vSuPLxAL/zXsPwyqXjWoMLinMoP1zd8WiarMOq1epf6rQayBd40/ABBSCAW5BR2tHZwujmhCJJoQkSpJY6Nj/X39PT09Wq22hlyzzBonxZM93T3T09OjY6MikUgsEvN5/KHBofGx8ZzsHMwaE+MTx8fHeVze8NBwn6CvT9A3PjY+OzMrmZTMzMz0cns7OjqewBqJ5d2/MTgbHV77WKl+8jK8n8I8psOprMdKshIOHz7s7+8PACqVytTU9JNPPvnkk0/0W2/dunX9+nU8Hh8SEmJnZ6fT6QDA0dHRwcHhsUoZ7J+yPpx85njm+JhMrdYe2B23bGjnqZCRkbF588Idm6urq5OTEx6PDwoKsre3B4Dc3Fxra+vk5GQCgWBubt7V1QUA9fX1n3766cqLUCqVaWlpeDzezMzsgw8+wOPxeDx+cHDwqe/LCnFxcTly5Ai2vHr16tu3bxMIhJSUlKqqKgDA4XCnT5/G4/Hx8fFWVlYikQgA8Hj8tm3bHregulqB262y/OyOksLO4oJO5+slY6NPcgYFveLjloTHSvLKK69gC8utMTGm3sutcm5OOTenFItnj5gmicWzOp2uubHfzCTRdF8ClczTaXUAIJmSnz+dc2B3HAHfXF8r2LA2cM/3UUfNUwb7791gZqQy7twuB4BgP3JzYz8AiEWzDrZZB3bHZaYyqJTeb9YE7N0WfdwydXRYusKqOzs7GxgYpKeny2Sy/v7+3/zmN5999hkAaLVaHA5naGi4fv36devWDQwMAIBOpysvL1+/fv2mTZu+/vrrlpYWOzu73/72t7/73e/Wr1/v7++fn5+/atUq/a3f/cRG0gvzWHNzSgAYHJDYWqdZ7E/My2rXaLQAYGud9uOOGIsDeFenMiwkNrLu2y+Dj5qnnLBKHR6aBgAWc8TPswoA0pJbcjPbAWB2Zt7NqUwyJV9ckEajxQXVHNwTf+F0jlyu0mp1zY391qbJVoeS6FS+VquTy1WeLhUdbcMW+xMJiU3FBZ1ZaQvjtLevl4yOSHU6HZs1etQ8xfIAnljerdXqtFqtp2tFR9vQMQuCv1f1Co+wQqMwrDYM4YWcbztfNlp2of3C8cbj3t3eADCvnd9H37e+bP2x5mNqnRoAcL24tWVr11et/4b0zaB8EADI42RntnPJSMl/Zf/XX4r/sr5qfd9cn1QlNaIYrS9bf5N1U6PTAIBjh2PpSOmRpiPGNcZanZYxxdhUtWlT5aa0/jQsglQl3U7bvp64/n8L/9e80XyFlQcAgVj4Rti//5b0r6+R3nqN9NarpDdfqXr9h479dVLG0a4Tv6n+l9/W/N4g7q41JhMK8woH+wenJqdkMpmALyBXkUeHR3u5vU1NTXK5/GHWKJ2WTomnpBKpWCQW9Aowa8zNyV1mjSPDI/3CfqFAODE+wevltba3SqelfC7/CayxlTHocrO0o23I36u6rJgNAGq11vFsntWhpMP7EiJCaNgvMDqcfmhP/BHT5Itnc+VzSnjQZSiamLU7mnFgd1wUrlap1ABAbGSd+X78hTM5CoVqeHh63/bord+Emu5LaKALo3H09tYhABgblZ48knZgd1xibL1WowOAED+y6b4Eq0NJ1x0LVSoNAGg1usJcpum+eOvDyX2CJT3UiIiIc+fOjY2NAYBWq6VSqcHBwRs3btRHaG9vn52dBQCBQPDRRx9ptVoAGBwcPHbsWEZGxmMdq/BgampSMwC4O1d8+an/oT3xni4VWq2OSuZZHkyyPpzcyhjUaXWzM8ozJzKtDyeb7k3Iy+qoLOs+uDve+nAynyfS6UCn0/V0jx81Tzm4J760iL04/46ODhMTEx6Ph61u2LAB67qJxeIPP/xQq9X29/fz+Qud+6+//ppOpwOATCYLDg52dHR8rH0BgLS0NAsLC/3qiRMnampqjIyMHBwcSkpKnJycAECtVjs4OGCtn4mJCQBotVoCgbB+/fr169d/8cUXPT09Op2Ox+Nt2rRp06ZNoaGhGo0GAOzs7Egk0vbt2w8ePKjVasvKyr755pv169dXVy9pMUpLSy0tLfv6FoYG165du6z/yuFwRkcX+gkffvgh1gKLRKLr16/7+vqufGdbmweuXSwYXDRQwe8VKRQqXs9EkC+5oU64e2sksawbAIL9yOb78dcdCxVyFQDQqfyDe+KPWRCsDiZ1s0d1OhgZnv5uQ9hRsxTTvfE5GW1arQ4A1GrN7WslB3fHuTsvv1+0trYuLCzElpdbY3Z62zdfBFofTrY+nGz2Y+LOLZFqtbadMXjlQgGXM8HljN+8XFRb0wsAttZpVRWcgf6p6WmFTDZ/5Vx+aEBNL1eknFfrc9Nfk/a2WSRij1arPWGVSiHxBvqnpFKFVKq4cCYnMpTWyxOplJoVHjjMGv/+97+vWbPmk08+eeWVV9atWwcABALh9ddfd3JyYjKZf/rTn95++20AYDAYr7/++vfff08ikZhMplwu53A4b7755n//938zmczh4eGwsLDf/e53aWlp9xekUKgCfUgpCU0atRYLUas0NEpvDYnnfL0kI5WBHYSyYjavZ6K0iH37WjEAhAXWeLlW9HJF3V1j5+yyZ2eVTQ19tkfSAEA0MePpWlFR2u3jTqyjCdR3s8XwcKkI8afweiZGR6SYL56zy6aSeTUk3tkTmbU1vVqtbss3oWeOZ3J7JkQTM7GRdf7e1cp59Yxs/pgFYWJc1ssV2Z/MopJ7a0i8i2dysYt593dR1odTurvGMJ9eCXKNfCN5I2WCso++D9eLu8K84tbl5tHlAQB76Xvzh/OZEma0INqy0RIAjjYfPc04zZxm1ovrv6d+r9Qq84fyt9RsmVJO7avd59jhyJxmjivGd9B21IprmRKmC9vFsd0RAH6g/fCXvL+Uj5azpezmqeYtlC1Fw0VFQ0U/0H7A9+EBYGftzvLRcuY006vL68e6H1dYeVhqja9Wv/lK1es77/rib6v/5bfVv3+N+tY9a0whFOQWsDpY7Yz2NkZbc0MzvYbOaGK0tbS1NLV0tHYQy4mx0bFwnzVKJJK2ljY2i42tYtaYkZ6x2Bq5PdyJ8YmRoRHMGtlMdh29bnp6ms97Emuk0wTnT2cDgI87kYBvBoDZWeWBXXEtTf1cznhiTEOwHxkALpzJiY+q43En6unCS/a5AJCd3rb4MtRotOftspkdwz3d40nxTQkx9QDA406Qq7jlJV3nT2crlZqUxMazJzO5nPEZ2fyZE5l0Kn9eoT5nl81mjfZ0j0eEULGe6ymb9AwCg9czQa7quXaxEAAyUhhXLxSwWSPDQ9PLLurLly9fvHhxcUh7e/uGDRuW7SaPxzMxMeFw7j2DsLS0xPqaKyfQhxQXVQcAAr7YdF9CQ51waFBCIvZcdsirIfGoZN4pm3Rm+9CMTLl/Zyy7c5TLGY8MpQV4V/d0j/O4E+ftcsbHZP3CyWMWBEbzwOCAZNmQLI1Gw5odDAsLi6ioqL6+PhKJtHbtWszUAcDPz2/NmjUEAgEbYASAzMzM77///rH2BQDi4uIOHjyoX33vvff+8Y9/NDQ0CIVCHA63b98+ALC1tQ0ICGAymSUlJe+//z4AEAgECwsLJpPJZDJXrVpVX18vEok2b95cUFBQVFRkbm6ODYSuWbPmnXfeodFoPT09+fn5xsbG9fX1fD4fu03REx8fv2fPHv3qDz/8sHr16jVr1hw6dGh6+l7bMjk5aWpqSiKRMN8FAHd39+PHj698Z0nEnnN22diyRCIfGpTI5SoA6Oke+/Q9Tz+Pqm722LREDgBdnaPkKm5edsclhzwASE1qOWeX3csT8XomLp7NFQonR0eklgfxvVwRlzPu51GVQWAAwIUzOZmprULB5MR9A6KffPKJvlN+X68xtuHOrfJJ8eykeHZocNrqUNK8Ql1fK7C3XRhduXI+v7yEDQBHDiU5ns0V9IolEjkA+LgT759sorfGSw55VDIPAMxMEq9eyOf3irB9u3O7vCCXufKjBnetEY/Hj46Odnd3/+Y3v/n8888BICwszMDAICUlBQBWr15tYGCg1Wrb2tr+8Ic/GBgY/Nu//Vt4eDg2sf6Pf/zjT47Bzs0qg/3I+LhG7E4cAFQqTXNj/4kjaads0jd8EYi1TbbWaVzOBAC0MQYx/wvyJSfG1GNJLA7gZbL51pYBh7tHT6eDMycysUOxjGB/yt5t0XSaAOtAtzT2f/25/ymb9FM26Yf2xHcyR7RaneVB/EDfFBZfOa92vl5SXtx180pRPV2o0wGna3zDF4G21ulYh6ChTqjTgfXh5C726P3FPQK5Rv4F8Ysp5VTRSNEm8iaFRnGm9YxntycAfEb8jCPjAEDZWJkRxQgATjJOBnADAEClVX1U8dG8dr5kpGQ7bTsA2LbYhvBCAECilKyuWD2rmQWAUF6oWYMZAOyq3RXDj8FKbJlqeT379Q2kDRvIG9aUrakYq9CB7uPKjwfnBgEgazBrD33PA6v6QPTW+M/Vvzeo+t2ujoN1UsaxrhO/rX7jt9X/+hrprcXWmJKcUlxQPDMz09HawefxRRMiMpE80D8wOzsrmZJIxBIykRwd9YBeo0QiaWpo6mjrmJZM06n04aHh0ZHR8LBwgUCgt0ZOF0etVksl0nZGu1gk7mJ1NdQ1PJk1qtXazLRWiwN4Nmv0nF12oA9pfl49N6eyMUuem1UCQF5Wu9OVIgC4cj6fUs0FgPExmeUBPCyyRuwy1Gi05vsTlXd9S6XSiCZmAn1IVoeSrA4l7doaBQCUau6Nywu3z+fschrrhAq5ynx/InbfjY9r9HKrBACHU9mMpn4A4PNE1odTAKCsiP3tVyH5OR39fVPLbv6cnJwuXLiwOKSurm6ZNXK53H379mEzCfRYWVmFhj7eeL7eGrU63TELAtbaVFVwvv7M3+5o+imbdDOThD7BpEw6f9R8YcAtLqouwHuhn2R9OGVwQDIxPrPj23B/r2o+T4SNGz2s5nNzc8ePH1+7dq2hoeHf//53bCgYAGQy2ejo6Pbt25ubm7EQAoGwd+9jPB1YqNtSa1y3bh2ZTMaWo6KiDh8+DAA7d+5MTU0FgJGRkS+++AIAwsLCzMzMsGjffvttQ0PD9PT0m2++uWHDhg0bNqxduxabQ7Rx40Z9V4lCobz//vtubm69vb1y+ZJhreTk5B9/XHKHKhaLR0dHs7Ozd+3ahYUMDg4eOnRo2bNPNze3s2fPrnxnqyt7zp1asMaYCPqPO2L2fB8lkyl6useOmqfoT8TE+IyHc7m1abLpvgTTfQkAkJbM8HEnYluPW6Zye8ZHhqUnjizM4AvyJUeF1QKAo33uUfOUTuaIWLR8BsmXX37Z09ODLS+3xoTo+kAfErasVmttzJLnFSo6lX/6eCYWeMkhrzBvwcxmZPP7d8Xan8wCgFtXizMIj7JGEnGhyGmJfO/3URftcwHg2sWCgsecQYRZY0lJCQDMzMzoB1SDg4MNDAywgZePP/7YwMAAu5dhMpm7du16++23DQwMysvLAeCVV1555513sNyGh4exm6nFRUxNzuHjGnKz2hcH8ntFZj8mYsvhwdTocDoA2Fqn9QknAYDVMWxjlgIAQb6klMSFCXimexOkUsVia+wTTl5zLNQPhN6Pv1f1hi8CtFodjdJ7+vjCIBKna0w0MaNQqGzMkhffvSYnNCXGNHi4VAj4YgBgNA8cNUvBNvVyRcPD01qt7qh5ytjoSgerMeQa+RriGolS0i5pP992HgBOt57GrPHD8g8FswIAqBqv+or0FQDYMmy9Od4AIFVJ1xDXYNa4g7YDAEzrTYO5wQAwrZx+t/RdbJgUx8MdqDsAADtrd+YNL0zRJE2QviB+gS0zp5mCWYFGp3m/7P2J+QkAKBgueAJr/Kfq1w2Ir+5lmtZLW491nfhN1eu/rf49NsS6zBqL8ovUKrVIJJLNyKYmp0iVpLGRsYnxiW52t1KhpJLvTcOJCIuoo9bprbG5sZnZzhSLxL3cXqzXmJ2VvWxAdVI8SaPQaGSaZEryc6xR0Cve8nXoySNpp2zSba3TN60LqqsVAICNWQo2qlGQ03HtYgEAXD6XT6fyAWBqcg6bg3C/NR7cE4dlOzU519836XS1OCejDQAUcpWNWTIAlBZ1YnfiAHDOLruxTiifU+lTJcU33rlVBgAOp7LrawUAwOkaO3nk3tBLXnbHp+95YsOwehwdHZf1Gjs7O/WP6wCAxWKdOHECm7SyGAsLi8cakQOA8BAqIakZABQK9aE98Vh7mpvZfuV8/kLRrBGJRC4WzdqYpczPqwEgLqpO3/Qdt0zlcRfaBC5n/KvP/XHBS6ahUanUtWvX3l9uQkKCjY2NTqfr7e3Fni8CwGeffVZTs5A8Ozvb2Nj4sfYF7rPG9evX6zPXW+N3332XmZkJAFNTU1jdgoODTU1NsWhbt26tr68fGRn54IMPsBAej4fNh9q4cWNj45JpIsXFxf/+7/8eFxe3ODA2Nnb37t361bq6hRkVDQ0NWAvM4/HOnDmj31M9Hh4eNjY2K9/Z9tahG5eKBL1ifcjB3XGjI1JO19iZ4/fG1U8fz8BuAcfGZMcsCACQltwScPexkc3hFE732OiIVP+sMciXHBtB1yc/ezJr/87YZUWvWrVKPyb8gGk4+if2c3Mqk50xUqmC1zPh4VKRltySmtTs6VLRxhjUanXlJV3pKS0x4fTE2AYAyMtqD/QhEfDN2A0aRlJC4/VLhQBgdzS9sqwbAMqK2ekpLVFhtOT4RgDITm8N9iOnJjfLpIoVHjhsGk5WVhYAiEQiAwODv/71rwBQWVn5l7/8xcTEBIfDvfHGGzt37pybmxsdHY2JiUlISNi0adOqVauYTCYAHDx48NVXX8XhcFQq1cvLy8DAICoqanERlWXd2zeHF+QwczPbs9PbstPbpFLF+LjM06UiN7M9N6vd8mBSNK4WAMxNEn09qtIJjOhwenxUHQAEeJOOWaRkpbdmEFp93YlyuaqeLjhqngIA7a2DNy8XdbQPx0bQkxOasFECPa0tg2nJLdkZbb4eRJVKw+WMe7pWZKYyMggMt1vlHW1DKpXGZGfM1OSSyVq2NmkVpQsXSZ9g0su1MiutNT2lxcO5vK5WoNPpDuyOG+ifWuGxxZjTzL1T8k7f3L35xlZNVjdZNwHgOuv6na47OA7uOus6NsXGrMHsNvs2AEyrpt8peUehVeQN5X1N+hoAInsjHdoccBzcoHzwYvtF/x5/HAd3vu18eG84AGwkb0zpXzDyLlnX8ZbjkbzISG6kTbNN6WgpADh2OHp2e+K4OFO66TbqYzzJF4iFr4f98Z+qX/uhfX+xmLi7Y59BmYFB+aIpOeRXl1mjcl450D8wMTExKZ4kVZKGh4bn5ubEIvFQ/1BVRVVMVAwAtLW24ePxLQ0togkRl8NdbI2PmIYjFolrSDU/3xo72ofNTRL1qw62mcUFnQBweF9CYkxDWnJLsB85O70VAG5cLrx9tTgzlZEU3xgWSAGAlMQm/WWIPYT296pOS24hJDb7eVaXFHaWFrJD/CkZBAY+tmHnlkitVsdsH/J0qUiMaejvmzpzIpNG7lUpNX4eVekpDEJic4B3NXZ/fNSCgA2BsFkj2I2jkC/OIDByMto8XSp5PROLdyEjI8Pe3h4bKdVoNHg83sHB4T/+4z9wOFxtbS0AbNiwwdLSMioqCofDpaenL+x4R4etrW1ZWdnKj5VQIDYzSTxxJHV4aFql0gT7kRNi6qsqOC1NA95ulekpjMzUVlenMh53QjIl378rTqFQAwAuuEY/A/HQ3gR+r0g+p8rL7kgnMAJ9SMUFrMVF9PT0HD16lEaj6UMKCgp8fX1PnTqlVqsBID8/38rKCofD4XC4Y8eOYX2R8fHxO3fuPK7NAwAOh1s8meUf//gHg8HAloODg3fu3AkA/v7+ly9fxuFwrq6u2OSmysrK48ePY3V49913W1paJBKJra1teHh4ZGTkqVOnkpKSAODjjz/W90EHBwcjIyOjo6NPnDhRWlq6uA5UKvX48eP67u+lS5ecnZ1xOJyTk5ObmxsAHD9+3MjIKDo6Ojw8PDY2FhuiEwgEjo6Oj/t6SXNDn6tTWWpSc05me05mu/cd4vS0nNk+hI2CYODjGiNDaZmpreEhVMzk8rI6jpgmZ6e3ZRAYnq4VoyPSfuGUfoaqp2tlWGANANSQeekpLckJTeEh1GXl3rhxQz+fdrk1cjnjbYx7M6BKizqxBem03PsO0cutcvzuTKHE2AYP54qSwk595Foq38OlfH7Rs0aBQNxU3wcANSTepHgWAOKj6jycK/StOQBQqrlebpXLWvxHUFZW5uDgwGKxAGBubu7cuXP6nxqJRDp27JiFhYWDgwM20t3T02NpaWllZXXy5MnOzntVdXR0tLCwwF6xOnv2rP58Y8zI5nFBNSH+lBB/cpAvOdiPjE0xAIBAH1KQLznQh9TfNwUAlaXdAV7Vvh5VuXdnunN7JgK8q4N8SaEBFCxkWiInVfYAQANdiI2+AoA+vh4qudfDuTw8+N7ZmpbIve9UerlV6ufX6U+Hnhoyb/GI+fy82tejytOlQj8DApuv8ViotCo/jp9Ede8xeNZglv41jEsdlyxqLbBOJABkDGRUjVcBgEKj8OP4qXVqtpQdxV+41UgQJljUWowqRgHgRMsJi1qLOOHCrWi0ILpNcm/crH+u36LewoJusfgtEfs2e4t6i6P1Rwn9jzHNTCAW/lPQ79a2fCPVzAnkQheB6x2ht1efn1efL6btrN0GMffeaywuKFar1M0NzTwOTyqVVldUiyfEfYI+UiWJTqVXllVizxoZLYzczFzplFQ6Le1kds7MzDQ3NbM6WI94eYPfy5dMSahkKo1Mk8lk3Z3dDXUNM7MzQr7wcV/ekCtU2M0lBq2mF/tVmO5L8HAu93arrCEtjNK7OpXZ2aQHeFUnxjQsHBD+vctQ/2uJCKF6OJfT774HUkPiebtVBniTstIWTsr4qOz21eKBvqnGur5J8cLlGXp0LMQAACAASURBVBZY4+Fc3nT3NS0SsQd7nqJUqrGXvnp5Ii/XSl8P4tzckjs/DFNTUy8vLwBQq9Xnzp2ztra2s7OzsLAgEAgAkJSUdOzYMUtLSwsLi+vXr2NJ7O3t9fPpV4hQIA70JQX5kvXTGnFBVOw50+jwtJdrpc8dov5eXD+/htM1pu/mlpcsNFAh/mQPl4rWlgdMCs3Nzf3yyy/1q+7u7paWlpgvYpDJZAsLCwsLC/3jq9ra2lWrVj3WvmDU19cnJt67MQoMDBweXpgzT6fTMYcDgMTExAsXLtjY2PzP//wP1gAyGIwLFy5cuHDhzTffxO4/pFIpVqu8vIVRgZCQEIFAgC2zWCwLCwtLS0ss8jLc3Nz03VAAuHbtmoWFBeaLAFBRUXHixAns9Nna2mKPKuPi4rZu3foEu9wvnPRyrQzyJQf5LnTl52aVxPLuxXFKizp97hD9vauL8lkAQCzr3rcjJtiP7O9ZhQ3ma9Ra7PEfALS3DnG6xgAgN7Pdw7kCeyJ2PwYGC564xBq5PROeLhVBviRPlwpPlwpP14rQAIqXW6WnS4WfZ1VEKC0ilObvVY1tDQuqiQylhQZQFiK7VAT7kSNDad53iPoQf6/qIF+yp0tFiD8Za7JxQTWRobQQ/3upgnzIEaG0J35z5akzMTbjc4cYHkwND7knbKd87hAjQqjhIdTIu8chNIASEUqLCLl3HAK8qyNDaREh1PBgqvedSk+XCl+PKmx/g3xIAd4kT5cKT9dK/YG9dxx8yZGhtPBgqvfd8HvH3LP6XirXJalC/Ml+nlX6VV+PqogQWmQoLeDuaQoNoHi7Vd6+VpKe8ngvyfzfRSAW/nPIv3zY8pnzwB2XAXf/4eCA4ZDF+oGzzyDOwIuyYI2lRaWD/YPNDc3MNiafx6+n1fM4vK7OrgZ6Q0tjC4lIwqyxtbU1MTZxYmxCyBcyGhmCXgGjidHOaO/l9rKZbE4Xh8/j4xPxfD5fq9XGRMVwujhsFruX29tAb2ikN/J5fGYbs7mxWdAr6GZ3k6vJK3/lf25OGexHvndhulQE+5H9PKtcbpRuWBsY4FUdEUoL9iNjm77bEHbhTE5ECBUXVOPpWrnsMsR+LV5uleHB1MhFqYL9yNgvGRdUo794o8Jq/Tyrgv0WLl7vu6mw3DxdKkL8KdgmnztE7BLw98J+/zSfO0TvO5XT00ueV5WXl1tZWTU0NKxwx4lE4pEjR+4fo3sEvVyRh3N5RAgtIpSG1c3LtTI8mLqkeqE0P4+F4xAaQPF0xa5ckv4IY1eNl1sldrEH+ZJuXS1e9gZzT0+PnZ3dyvtDIyMjtra2D5zx97SIj4+/evWqo6NjdHQ0Zo10Ov3q1atXr151dXXVTy59YhoaGqytrfPz81cYn8ViWVtbFxQUrLwIsWjW06XC/XZ5gFd1ZCgtPIQaEUL1wZpfd+Jiu8F+ftiPNiywxtOlwtwEf2BXXHgINSKE5utO9HSp8L5zL4m++Q0NoESG0sICa25fK85c+mxLp9Ppn2ovscahQQk+riE1qXmRWpYu37/6iAgPzGd5KgK+OTWpRTq90gHVZ41kSk7AL9Tq4ft4/+785JF52AFpvi/hI0JWks8DkuBjG8hV3Bd9aJ8TvZN8A8/XDIINDAIfolADA1cDtxpPAEjCJ3l5eIUGhYaHhoeFhIUEhWD/3S0sOCw8LDw8LNzf1x8XigOAjo6OWzdvhQaHhgSF4EJx2F9cCA6LHBocGhYcpv9HcT7ePgG+AWEhYdh/iQsPCw8JCgkLCQsPDQ8JCgkPDXe55ZKfu9ImZl6hzkpvTUlsWnZa05JbivJZ6SlLfm+Fuczs9LaHXIxP8Ev+yUbgwdc4Ad+cntIyO6tcti9EIrG7u/uBu3k/DAbjgd2XRzA8NI2Pa3hk0/ST19T97VVzYmw99kR/MXw+f+UjvZOTk9hjoGdHTk6Ov7//4sdDDAbD39/f399/8STSnwODwcBeRFkJQqHwEe/FPRDptOKuKaykIV3yo83NbM/P6VhZm9mSmtSCj23Qj7XcD/ofqohfGnK1vFpAJvZUV3FJD1NlT6Vwug8ARkdHOd2cHk7Pw8Tp5mADYrOzsz09PRzOQyNzOBwelzc/Pw8AfX19j8iWw+FwujnLJn8hEIiXB2SNCAQCgUAsAVkjAoFAIBBLQNaIQCAQCMQSkDUiEAgEArEEZI0IBAKBQCxhwRormjhISEhISEi/ci2xxgJqJxISEhIS0q9cS6xRo9QhISEhISH9yrXEGiPy6EhISEhISL9yLbHG0UkpEhISEhLSr1xLrHFWPo+EhISEhPQr1xJr9EypRkJCQkJC+pVriTUmV7ORkJCQkJB+5VpijRk1PS9W6TWcVHI3gdRFIHWlkruRFgs7LEhISEhIz1pLrNE7reYFyiu1JjCzDk9kEchdqaTupMrOqOLWqEKk1sjCVnwFK5WE3BEJCQnpeWjpK/+1PS9QhbU9hIqOkKz6lGo2ntiZQ+G0c8bZ/Ak279ct/gSTM55P6UksZ6G+IxISEtJz0BJrHJnUvECNSbTd/TKvFHJSVWdsWTu5Rbiif3L366CBORRV1IasEQkJCek5CGt4F6xRMKp4geobn+cMzngRyElVnbGlHVRGHwCAGgkAoJk9jKwRCQkJ6fno5bLG7gGZVwoZX94ZW9xRg6xxkTU2dQ5HFbQRqrpTiF1ISEhISM9UL5c1cgZkninkqNLO8ELUa1xijc2dw2EFbXGV3XEVXUhISEhIz1QvozVGFjFx+e3UVmSNS60xtzW2lB1b2omEhISE9Ez1slnjjGcKKbywOTSvmdra/7JYI4b2BVtjSG5TVElrNBISEhLSM9YSaxTNLkg8B0NTGv6YXDCuEIwphOPzolkYkwJ/TCEYUwjGn4n6RPOcoRmPZFJQTnNg9k9Z4zI0z8yWtNDTN1lI501JFE/ojhg/0xrZw4FZTaH5rWFISEhISM9YS6zRPaE0OIPkn0q8GZFXUNc1LNPwRYq+KWX3iMw9oSQ8l9o/pRSI5wVihV58kYIvUqwwRB+OhSyTcHK+e2TGPZnkl9Xsl/lIa9RCJ1+UTGQlljOjittyqT3PsFcHEFHYuto2toM3/tgOpwFQQVo1m1DVqVXpnty/AZrZw/4ZTYG5rUFISEhISM9YS6wxMLnikwNX9p0PiMwk09qEc0oYnVJOzujGJKqU4vp8UvvIpHJcop6c0Yll2skZ3eSMbkg0PzKpXAiRaadmdaNTykGRQizTYiEiqWZQpBibUklmYXRKJZJqJmd0Q+L5wQnFoGiJhifn+SMzHskkz4xm7/Rm2iOsESCpkvXRqdiA7MZMaveOm5mxpe0LfcfFaBd12vSo7wtUA+ge1Ae9G5hUyfrqQnInX/SArB7YedUtCSEx+qoZQp1qaUzdXe+8v24P2t8W9rBPepNvVptfdisSEhIS0jMV1iQvWOPgxOw6i1uXg9IBoIjKOno7uok9EJJKPOOJvx6SFZlNkau0xEaOrVu8g3fyOZ+UK4EZfaMywfD0Rb/Us55J531TznjgSc1cuQp8EkrPeOBPeySGplWpNAu51TGF4ZlkB+/k3iGJSKoam1Is1sT0/MD4jHtytUsy3YNQX9ParwNQqh8gAEgld60/h+/giwCAyh7eeSsrprQdAFp54zfia9xSal1TasclCoVS55fV6Jpc65JMuxZHrmMPY3saW9ZxK5HqlFiTUtUJAPVdI04JNW4ptbfxVO+MeumcGgCEo9JbeKpzCu1EUNl319NYQrEOIDi32TmJeiOeUlTfCwClTQKnhBrX5FqnxJrQfIZKDQDQwRfdiKc4J1FvJVL5o1JCdSfm3L0j0luJNW4ptbcSa7hDEgCYndcGZDe6JNGux5GLG/ige+j+NrFHPAl17qkNnmlISEhISM9WS6yxe0C83uLWBX8CAAQQKt7dee7wNdzWU56G5jdXm1y2dY+vZws32bheCclo6RKYXgtba3azsWvwqEv0j45BjWy+S3T+29vO5lDaQjOqvrK6nU5sjius/cz0WnwhNamk7t1d5w5dDdti67nBxqVrQCSeUY9KFIs1Lp3vn5hxT6q+lUC9g6dT2vp1AHL1AwQABHLXl+fxtV0jADCvhR9dcxwiqjr7J/e45LgS6PXdQ0cDS48Hl3FHpLtuZ1kHFLfxxwJym3c4ZbbxJxKrOrc7ZZQx+nLreN9eSc2gcgob+R+fio0tZ7b2jpl5FzrhqfwxqZVf0fmo6rbeMY/0+m+vENqEIv/c5n1uOfSuobhKltFlQlV7f2wF8/PT8Tl0XkPP2B6XnOACRvfg1D7XHFcCva13rJE7JpKpzH0KzX2KeKNSc5/CizGk+u7h89HV++/kcYclzoTafa45Nayh2q5h7ohUqXno/jZ2jbgn0V2Sat2S6UhISEhIz1RLrJGzyBrDMqpX7buEL64TjEw2sPs3H3c770copDH/8t2ZpJJ6ALgYkLrRxq22Q7je8padRwIAZBBb3t99obiWZe+TsvbwzfN+Kef9Ur638wxKrUyvbPpwn2NUbg13cLJTMD4yKR+TKJZpQjo/MDFzJ6n6Shzt1l1rVKgfIL01NnHHAKBfNLvbOdsro6GWPfLVOfwZXKVHWt1pXOWxwNKuwamD7nnXEigAUNXe/5FtbFX7oAuhdsvVNOeUWpeU2kMe+fGVrHJG3zoHfC17BABOh1WYexe2C0RfnscHF7QAAL6qc8PFlDaB6FRo+a7bWXfS6Dfx1B/dcgsbe1NI7A0Xk3kjUgA46J5/Ibq6njP26anYTCoHO6QqLRwNKLULq2jli4wuE44HlXqk0c9HVh32KmD1T15LoBwLLLmdXGsTUJJM6tLpHrq/jV0jLkn0a4n0m/g6JCQkJKRnqiXWKBgQfbT/ylnPRAAIJVT+z/dnqhq6AGB0Qval5a2TbnENHb3rLG65Rub19I2ccI01OnanrXvQ7FqY6ZVQjnAkOKXiw32XymuZAUllX1rezi5vqmnikBq6+gbFCfnUP2+1K6S0A8DcnFoyrZiSKKaml0gqmx8TzbgnVV+KpjnF/4Q1JlZ1fno6LruW2zs8Ze1XfCmWpFCq2/iibTfS3dPrm7kjjT1jTKFoaHJu/528s+GVvSNTkSVtW66lNXPHo8vat93MKG0SNnNHG3rGhsQzObXcj07GENv6AcDGv8TUM587PG3qmX81ntw7MuWRXm9on8jgT3ik1//olkNhDjX2jDb0jE1Mz+GKW9ecjmf2Tc5rYPftbIcIYmff5A9OGT5ZDb0jU11DU1OzakufIiu/4p7h6f138q7EkbG6NfPGJ2dVnf2Tbb1jqZTury8k46tYj9jfxq4R5wT61Vj6jfg6JCQkJKRnqqXPGsembG5HBRHK1BptNrHpwOXgelavRqMdnpDYecS7x+ap1JrqRvZZr8TroRm7HPzWW94SDIsHxqYuB6VeD8mwvhX5j72O2VVNOtC5RuXa3ol18MEfd41OK6urauzc7xhMaeEo1VrJjPyBks0pxqdk7knVF6NpNx9pjVodlDOEZ8Mrr8ZTLseSb+FpU3NqLYBWB9TOoXORVU546vXEmjupdO6I1MKn6KBH3vUEin0EsbKtX6sDpQaC8loux5Kd8FTHGFJBfW89Z/RYUGkzb1yrA5+sxtvJNJUWuockF6Kqr8ZTrsRRLkRXc0em5zVwJ5V+LZ7ihKdeiK6msIbKWoS2IeW9o7J5DdzEU/1zmrU6qOeMOUQQr8aTL8WSe0am/XKa3FLpWh0w+yYvRFc74ak3E2uuJ9bwRqRhhYyr8ZSL0dUJxE7tQ7qMemu8nUC/HEu/Fl+HhISEhPRMtcQap2dU8nndjFw7JVPK5jRypU46q56SKSUzqrl53axCO6dQdQnHMisbiqltP14MPOkWPyaeFk0r8sgtZfT2i/4p39l6NXXyVRqYU2hn5BpM0lm1bE4tV+qkcwu5PVCyOdX4lPxOUvXZaNqVeHrNw61RoQaVFnQAah2odaAFUGoXwtXYKxI6UOsAAMal88ZXU0/jKgCbr6qDeTXMa+7FUetAqQWlFnR3M9EAaGGhCCwaFjKvAaVmIZOFhJqFasxrQKEGLYAGltcBK+v+cGyTSgtqHWh0oLmbycOssalr5EYC/Vws/WJ8HRISEhLSM9USa5yaA4kcJHMwNQeSOZi+u6wPV2iA0ia8Epp5Kyr/TnzxkHhepQX+yIxzdIFTZN6N8Jx69qAaYHIWJFgS+ULCZbk9UFIFjE2rV2iNCjXMa+7pgeFqLUzPqSNK2rJrezQ6UGoenHb+bsjiTQ8r4oEhj0j46AyX1QFZIxISEtLLoCXWOKP4CcnkoFz0Kp5cBTI5zCnvhai0IJP/dD4PlFwJk7LHsMaVaP5ubeU/L58XK2SNSEhISM9TS6xxXvEipVaCTKZ2f6rW+MsQskYkJCSk56kl1qhQvEiplCBdZI3U9gGAhQeBv3IBQHP3KLJGJCQkpOejl84aXRKIpyIoF2OoxCa+XKmWzCGpFUp1bcfAlVjqmSiqQwwNCQkJCemZaumA6vyLlEoJshl1cGaNK77KI6U6MKMmPLcWh5RbG55bG5RZ45lS7ZFc7ZFCQkJCQkJ6plpijS8cnQ6Uao1SpVaq1PJ51axCOYekUM4qlPJ5FXZYkJCQkJCetTBLelmsEYFAIBCIlwRkjQgEAoFALAFZIwKBQCAQS0DWiEAgEAjEEpA1IhAIBAKxBGSNCAQCgUAsAVkjAoFAIBBLQNaIQCB+LWi1oFIh/VxptS/6RD57kDUiEIhfEfPzoFQi/Swha0QgnhC5fHZoUDA4wEdCeknU38cVi0Rq9Yu3lv/rQtaIQDwh3V1tBXlJ9XQiEtJLIlpNKY/bpdW+eGv5vy5kjQjEE9LJbGZ3trzoWiAQy3nhvvILELJGBOIJYbNamB2NL7oWCMQSUJcRWeMKQdaIeCYga0S8hCBrRNa4QpA1Ip4JyBoRLyHIGpE1rhBkjYhnwnOwRrVaPTc392Rp5+fnFQrF/YFTU1M/u16IlxdkjcgaVwiyxl8+SqVyfHwcW56ampJIJM+h0OdgjU1NTQcPHnyytEFBQS4uLssCa2trr1279rPrhXh5QdaIrHGFIGv85cPlcletWsVkMgHA0dHR2dn5ORT6QGskEolEIrGnpwcABAIBhUIhEom1tbXY1qmpKTqdjsVRq9Wtra1EIrGlZWGa69jYGI1Gw7YCgFqt9vLyWrVqFZFI7O/vHxwclMvlLBZrdnZWqVRi0QQCAZaWx+ORyWQikdjQ0AAAExMTpqamu3btIhKJYrFYIBCo1eq2trbx8XEWi6VPQiQSq6qqWltbNRoNAMzMzGDZ1tXVzczMYNFIJBKRSOTxePpUSqWyra1NLpc/s0OLeHKQNSJrXCHIGn/5CASCt9566/DhwywW6/Llyzdu3MDC8/Ly8Hh8RUUFttrb25uVlYXH4wkEgkajycnJwePxdDpdn09tbS0ej8/MzFxJocusUSaTRUVFHTx4cO/evZGRkQCwd+/eDz/80NjY+IcffqiurgaA2NjY//qv/zI2NjY2No6KirKwsDA2NjYxMcH8zMnJ6f/9v/9nbGy8efPmvLy8iYkJQ0PDP/7xj8bGxrm5uadPnz569OjJkycHBgamp6cPHz586NChy5cvY1a3ZcuWjz/+2NjYeM+ePXV1dXV1dX/729+w3Jqbmzdu3Hju3DknJ6ecnJwffvgBAJhM5smTJ42NjTdu3PinP/1JLpePjY35+PhgdXvrrbfKy8u1Wm1hYeHBgwcPHTp04cKF9vZ2ANixY8epU6dOnjw5Ojr6NE4d4imDrBFZ4wpB1vjLh81m79y5MykpydzcPCgoSG+Nzs7Op06dOnPmTGlpKQBcvHjxnXfeMTExOXjwoL+/v7m5uYmJiY2NDYlEAoCqqioHB4dTp07Z2tqmp6er1eqfKHSpNY6Ojp44cSIkJETvtTt27CgqKgKAgYGBVatWAUBgYOCJEyewrWvXrsX6i7W1tYaGhgBw/vx5V1dXbOuHH344OTnZ3Nz83XffYSFHjhz57LPPBgYGsNXw8PCwsLCtW7fa29sDwLfffkulUgGAxWJ9+umnAODp6Xn58mUs8qpVq3bu3AkARUVF27ZtAwAzM7OAgAAAUKlUa9asUavVWVlZ+rJ2796dl5en1Wr//Oc/e3t7h4WFffvtt9jQ7q5du9avXz85Ofn4ZwnxPEDWiKxxhSBr/OXT1dW1adOmjo4OJyenr776ytvbGwuPiopydXU1MzNbv349AJw9e9bHxwfb9P7778tkMgBITk7evn07AOzdu3fHjh2urq4ODg5vvvmmSqV6dKEPHFC9devW6dOnU1NTAWDnzp1ZWVkA0NPTs3btWgAIDg62sbHBYn7zzTd1dXUAQCKRjIyMAOD8+fOenp766onFYhKJ9NVXX2EhBw4cwLKdnp6+fv36tWvXnJycNm3adOXKFQAwNjbGup4cDgez4StXrjg4OGBpDQ0NBwcHASA3N3fHjh0AcPDgweDgYGzr2rVrNRpNZmbm1q1bsZAff/wRs8b//M//dHR0dHJycnd3xyx/+/btVVVVKz81iOcMskZkjSsEWeMvn66uri+++AIABAKBoaGhl5cXADg7O9+6dSsoKOjUqVNbtmwBAHt7e+wxpFwu//zzzzG3iI2NPXDgAAD8+OOP+/fvDwoKCgkJyc/P/8lCl1mjRCI5evSovb29nZ1dQUEBAGzevBkzs+7u7g8++AAAfHx8Dh06hMX/7LPPsH5eZWUlZpzOzs4ffvihqanpgQMHQkND5+fnR0ZGXF1dTU1NS0tLzc3NcTgcAMhkMk9PTzs7O3t7+08//RTzv+3bt2/atMnU1NTMzCw3NxcAmpubz549a2pq2tHRYWho2NHRAQCZmZmbNm0CADKZbGtre/jwYRMTk7/+9a8KhUIoFN68efPw4cOHDx/+05/+VFFRodVqY2NjT58+bW9vb29vX1hYCACbNm1a4YAz4oWArBFZ4wpB1vjLh81mY6OIAHD58uWrV68CQGFh4ZEjR8zMzIyMjLBumZ2dnZOTEwDI5fLVq1djg5PR0dF79+4FgMbGxrNnz5qZmZmZmV28eFGn0/1EoUutUS6XJyQkxMTE1NfXYyH19fXDw8MAMDMzQ6FQAIDP57e2tmJbaTQaNiwpEomweTpXr17dvn17TExMTEyMPlupVBoTE8NisVgsVl9fnz48Li4uJiaGQCBgU362bNni4OAQExOD+SJGV1dXTEzM4OBgfX091kUeGRnRV6+lpSUxMRGHw73zzjtYTcRicWJiYmJi4gcffJCXl4dFw3YqJiamqakJ26mRkZEVnxnE8wZZI7LGFYKs8ZcPNnUTW+7r69M/kKutrS0pKamoqOju7gYAoVCI9RS1Wi2TyVQqlQAwPj7O5XKx+B0dHSUlJSUlJWQy+ScLfeovb1y4cEE/oPq4bN26FRueXTkBAQE7d+7ctWsXmUzGRo9ramp27ty5c+fOyMhIkUj0ZDVBvFiQNSJrXCHIGhHPhKdujSKR6ImntwwPDz/uPwcQCoUMBgObd4oxNTXFYDAYDMb9/ysA8X+FX4Y1vvDvaiFrRCCeEDarpRN9eQPx8qH7vy+ZbG5+XqNSwYsSskYE4gnpZDZTKaWjIwNISEhPV6XFadPT6AWhZwuyRsQzYWRkgEIqrqWWIyEhPUXRakrraokKBfp3S88WZI0IBAKBQCwBWSMCgUAgEEtA1ohAIBAIxBKQNSKeCSPD/eTqQlpNKRIS0lMUlVJCp1WqVEqlUlFLraBSnkehlOoidifjRTcqzxVkjYhnQiezmUYtGx8bQkJCeroqLU6bnZXKpJKy4vTnU2I3u5VUVfiiG5XnCrJGxDOBzWrpZKH3GhGIpw+FVDQzI5VJJTXk4udT4uTkOJVS+nzKeklA1oh4Jjz1/4aDQCAwyNWFmDVSSEXPp8SJ8WFkjQjEUwBZIwLxjEDW+BxA1oh4JjzQGsVicUlJyeKQjIyM2NjY51ivF4xGo4mIiFj8AZCnwtzcHA6Hwz7j9ZMolUoikYj9+3g9NBptaGjo6dYK8Yz4+dbI5XKxb8Xokclkj/jUKLJGBOLpcL81SqXSkydPBgQE6EOysrIsLS2trKyuX79+48YNd3d3Ly+vGzdu3LhxQygUZmRk3Lp168aNG2lpafokaWlpvr6+np6e+n8XzuVysSTYJ64wZmZmsMDGxkZ9wtu3b9+4cSMqKgoAWCyWp6cnFkcuX/6PRfLy8vTfKsFqrvfvsrIy/aapqan09PTFCQsKCnp7e7HlgYGBnJwcAGhpafHw8Lhx48bNmzcHBgasra3Nzc1X4o7l5eU3bty4ffu2PmRwcPDGjRsMxpK5gqOjo3fu3LGwsEhKSqqoqMB2ysnJKTIyUq1W35+tSCR69913l/2v9o0bNy770iSVSsW+rIl42Vi5NdbV1T3whsnHxwf7DqseNpv9j3/842Efm0PWiHhZ6OvrO3/+/LFjx44dO4Z9Qf45EBMTQ6PRnkpWy6xRLBZfvHhx8acWAeCjjz7CbOb69euOjo7r1q17++23HR0dHR0deTzee++9Z2Njc+nSpdOnT+PxeCxJUlLSG2+8YWVlNTs7CwAsFsva2trR0fHSpUvHjh1jMpkAIJVK7ezssEBra+vS0lIAeO+998zNzS9duhQWFgYALi4u77///qVLly5dunTt2rWxsbHFFcvMzDx69Cj22Q2s5th3ksvKyk6dOmVvb48VxGaz33vvvcWtyddff603y7KysjVr1gDAuXPnPvnkE6wssVgMALW1tdj3mR9BXl4ethfnzp1zcXFRqVQcDufcuXPYAcG+cIlRW1v72WefYcslJSXYjl+9evW111574LdKRCLR2rVrlzWC27dvJxKJi0Pq6+vLysoeXUnEC2GF1lhfX3/69Gk7O7v73TEmJubIkSOLQ0ZHRw0NDZE16kHW+JJSWFj4WKbvOwAAIABJREFU3//934GBgYGBgWw2+/kUWl1djX278eezzBo5HM4HH3ywLM4333xTU1OjX42JibGzs9Ovrl27Fvv8U2Fh4ZdffqkPNzIywj4h2dnZaWlpqW/QKRRKf3//5OTkqVOnCAQCFshisdra2gBg/fr1iz+yePPmzVu3bmHLf//73/WfUNazbds2zI+5XO7777+PBTo4OHh5eZmammIdrO7u7mWtyY4dO/RfOa6qqvr2228BwN7ePjAwcHHm5eXlxsbG+lVPT899i/D29gYACwsLHx8fLMK7774rl8tzc3M3bNgAADY2Njdv3tQnb2pq+uqrr5bV38PDIzY2FjuANBoNy7mlpQUApFLpX//61x07duzZsyc8PByLv2/fPkNDwz179pw8eRILIZFI2dnZAODi4oLdwYyNjWHfwUa8WFZojcHBwWfOnHF0dNR/6FSpVB46dGjPnj2rV68+e/YsFuji4rJnzx5jY2P9Ddb9IGtEvCzk5+fv3r17cYidnR32Ifuamppr164BQExMzLfffmtkZLRt2zaJRAIAFAolICCAQCDExcUBwKVLl7Zu3WpmZqa9+xWZtLS0rVu3bt68Gev3jI2Nbdu2zdjY2NfXFwBCQkKqq6sBQC6X796928jIyMnJCUsYGBi4efNmIyOj3bt3r+SDhcuskcfjrV27VqPR6EN0Ot2GDRsW388GBgba2Njot65evXrdunVGRkZWVlaLhze//vpr7DFJSUkJZglJSUlGRkb79u3r6+sTi8X/+7//CwANDQ1GRka7du3COlhr16794osvjIyMzpw5AwBBQUF//vOfjYyMNm3alJ6ejvVBF7Nz586MjAwA4PP5n3/+uU6nKygoOHnypEAg6Ozs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" /></div>
<h4 class="MsoNormal">
<span lang="EN-AU">Test</span></h4>
<div class="MsoNormal">
<span lang="EN-AU">[root@zabbix~]#snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s “teststring000”</span></div>
<div class="MsoNormal">
<span lang="EN-AU">SNMP trap was received:</span></div>
<div class="MsoNormal">
<span lang="EN-AU"><img alt="" src="data:image/png;base64,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" /> </span></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<span style="mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-no-proof: yes;"><br />
</span></div>
<div class="MsoNormal">
<span lang="EN-AU">(UDP: [127.0.0.1] …) has the source IP of the problematic host. It is 127.0.0.1, because it was run on the Zabbix server itself.</span></div>
<h4 class="MsoNormal">
<span lang="EN-AU">Trouble shooting</span></h4>
<div class="MsoNormal">
<span lang="EN-AU">Start snmptrapd daemon with “-f –Le” option will output errors in console.</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-75379866321223587342013-01-23T21:49:00.001+11:002013-01-23T23:55:44.054+11:00Zabbix: Monitor customized applications by SNMP and JSON Low-level discoveryLow-level discovery (LLD) is an amazing feature in Zabbix, once you have defined the template you can start to monitor hundreds of hosts in few minutes by importing hosts definition in XML file. <br />Low-level discovery is used to discover dynamic items, for example, you can’t monitor disk space usage of a volume by static binding, because the index number of the volume is dynamic. <br />The customized application in this example, is a shell script to check database and web service, it outputs to stdout, which follows “key=value” format and it contains with string and numeric values. <br /> <pre>db-status= [OK]<br />web-status=[OK]: http-code: 200<br />web-time=42<br />db-time=40</pre><br />The goal is to create monitoring entry and trigger for each item automatically <br /><br /><br /><strong>Execute the script by SNMP</strong> <br /><br /><br />Net-snmp allows you to execute any arbitrary command by “exec” parameter. Edit /etc/snmp/snmpd.conf and map OID to the script. exec .1.3.6.1.4.1.2021.200 testscript1 /usr/local/bin/script1.sh The lines of output are in MIBIOD.101.x ( .1.3.6.1.4.1.2021.200.101), which can be retrieved by snmpwalk on .1.3.6.1.4.1.2021.200.101 <br /><br /><br /><strong>What is Low Level discovery?</strong> <br /><br /><br /><a href="https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery">https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery</a> <br /><br /><br /><strong>Discovery of <acronym>SNMP</acronym> OIDs</strong> <br /><br /><br />It is possible to automatically add the script by SNMP OID LLD, but it has drawbacks: once LLD is completed, the 4 lines of output will be added as 4 items, each value of item is retrieved by snmpget, which means the script will be executed 4 times. <br /><br /><br /><a name="discovery_item_json_format"><strong>Discovery item JSON format</strong></a> <br /><br /><br /><a href="https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery">https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery</a> <br /><br /><br />Zabbix also supports LLD by parsing output in JSON format. This method can overcome the drawbacks of SNMP OID LLD, the idea is to run an external script to do snmpwalk on the OID then save outputs to a text file on local server, the other script retrieve value of each item by simply reading the text file. This script will be still executed 4 times, but it is executed locally and doesn’t do remote connections. <br /><br /><br />There are two scripts to execute snmpwalk for different output values, one for string and the other for numeric. If you don’t need to do graphing of the numeric value, one script is enough. <br /><br /><br /><br /><br /><p><a href="http://lh4.ggpht.com/-lZyvYf2_-s8/UP_AGhJi_oI/AAAAAAAAAL8/jT2FQ4yX9pQ/s1600-h/image%25255B3%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-_YsMONN6awo/UP_AHzqW-LI/AAAAAAAAAME/BnRdkuMnPuk/image_thumb%25255B1%25255D.png?imgmax=800" width="609" height="80" /></a> </p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#retrieve string values with “-s” and output in JSON format</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#The macro name KEY/VALUE is arbitrary</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[root@zabbix:externalscripts]<span style="color: #008000"># ./snmpwalk.pl -s server1</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">{<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> "<span style="color: #8b0000">data</span>":[<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> {<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> "<span style="color: #8b0000">{#KEY}</span>":"<span style="color: #8b0000">db-status</span>",<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> "<span style="color: #8b0000">{#VALUE}</span>":"<span style="color: #8b0000"> [OK]<br /></span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">"<span style="color: #8b0000"><br /></span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> }<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> ,<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> {<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> "<span style="color: #8b0000">{#KEY}</span>":"<span style="color: #8b0000">web-status</span>",<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> "<span style="color: #8b0000">{#VALUE}</span>":"<span style="color: #8b0000">[OK]: http-code: 200<br /></span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">"<span style="color: #8b0000"><br /></span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> }<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> ]<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p>#Item prototype details for scripts-getstringoutput</p><br /><a href="http://lh6.ggpht.com/-vhbT6ImiT0E/UP_AJIyuJXI/AAAAAAAAAMM/DA1dv8eyVOk/s1600-h/image%25255B7%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-tfj0vQrpf0E/UP_AKKy7vHI/AAAAAAAAAMU/AOhKX6nkvtU/image_thumb%25255B3%25255D.png?imgmax=800" width="610" height="70" /></a> <br /><br /><p>Column “Name” is _{#KEY}, {#KEY} is macro in JSON output, _ is just simply prefixed to make it a valid name. Column “Key” (actually, it is value) is retrieved by getvalue.pl</p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[root@zabbix:externalscripts]<span style="color: #008000">#./getvalue.pl -s server1 web-status</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[OK]: http-code: 200</pre></pre><br /><br /><p>Just link the template to a host, the keys and values of the items will be discovered automatically.</p><br /><a href="http://lh3.ggpht.com/-SuwrgvCunmk/UP_ALNRbc9I/AAAAAAAAAMY/QwvWU0wFApU/s1600-h/image%25255B11%25255D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-tosH_Zr1lxQ/UP_AL3VgWkI/AAAAAAAAAMg/GR0BVooTKU8/image_thumb%25255B5%25255D.png?imgmax=800" width="609" height="56" /></a> <br /><br /><p>LLD is such an amazing feature, even there are hundreds of items, they can be automatically discovered in few minutes.</p><br /><br /><p><strong>Some tips in Zabbix implementation:</strong> <br /><br /> <br />1) Define global macro for SNMP community string in administration->General->Macros, the macro can also be defined in template or host level. <br /><br /> <br />2) Items  won’t be updated  straightaway after being added, it has to wait for next update specified in update interval <br /><br /> <br />3) Define regular expressions in administration->General->Expressions <br /><br /> <br />For example there are some virtual interfaces you want to exclude create regular expression called <br /><br /> <br />“Real Adapters” with expression: (^lo$|^Microsoft|^RAS|^WAN|-0000$|^Teredo Tunneling|^Software Loopback|^sit) <br /><br /> <br />And refer to the macro by @Real Adapters in the default “Template SNMP Interfaces”</p><br /><br /><p><a href="http://lh5.ggpht.com/-7_MtFEKZ4W0/UP_ANBhhH-I/AAAAAAAAAMs/3DOXt3TEQGs/s1600-h/clip_image002%25255B4%25255D.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh5.ggpht.com/-j0n5VUi3VXk/UP_AONVBJyI/AAAAAAAAAM0/_Uj5Pwwj0GI/clip_image002_thumb%25255B1%25255D.jpg?imgmax=800" width="561" height="333" /></a></p><br /><br /><p><strong>The snmpwalk.pl script:</strong></p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#!/usr/bin/perl -w</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">use warnings;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">use FileHandle;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">###---------- main ----------------------</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my ($cdir)=$0=~m|(.*)/|;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $type=$ARGV[0];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $host=$ARGV[1];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $oid='200.101';<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $fname="<span style="color: #8b0000">${cdir}/logs/${host}</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $afname="<span style="color: #8b0000">${fname}a.out</span>"; $ifname="<span style="color: #8b0000">${fname}i.out</span>"; $sfname="<span style="color: #8b0000">${fname}s.out</span>"; <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $timegap=120;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">if</span> ( ! defined $host ) {<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">hostname is required\n Usage: $0 [-i|-s] hostname \n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">exit</span> 1;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $mtime = (stat($afname))[9];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $ctime=time;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#no need to do snmpwalk, if the file is recent </span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">if</span> ( ( ($ctime - $mtime) > $timegap ) <span style="color: #0000ff">or</span> (! defined $mtime ) ) {<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> @output=&snmprun ("<span style="color: #8b0000">$host</span>", "<span style="color: #8b0000">$oid</span>");<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> map (s/^STRING: "<span style="color: #8b0000">//,@output);<br /></span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> map (s/\"<span style="color: #8b0000">$//,@output);<br /></span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #008000">#all values</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">open</span>(OUTFILE, "<span style="color: #8b0000">>$afname</span>") <span style="color: #0000ff">or</span> die "<span style="color: #8b0000">Can't write to $fname: $!</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> OUTFILE @output;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> close (OUTFILE);<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#numberic values</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">open</span>(OUTFILE, "<span style="color: #8b0000">>$ifname</span>") <span style="color: #0000ff">or</span> die "<span style="color: #8b0000">Can't write to $fname: $!</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> OUTFILE grep(/.*=\s*\d+\.*\d+$/, @output);<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> close (OUTFILE);<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#string values</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">open</span>(OUTFILE, "<span style="color: #8b0000">>$sfname</span>") <span style="color: #0000ff">or</span> die "<span style="color: #8b0000">Can't write to $fname: $!</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> OUTFILE grep(/.*=.*[a-zA-Z]/, @output); <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> close (OUTFILE);<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">($type)=$type=~m/-(i|s)/;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">&printjson ( "<span style="color: #8b0000">${fname}${type}.out</span>" );<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">sub</span> snmprun {<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> my $host=$_[0];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> my $oid=$_[1];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> $ucdprefix='.1.3.6.1.4.1.2021.';<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> $snmpwalk='/usr/bin/snmpwalk -v 2c -O v -c public';<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> $fulloid=${ucdprefix}.${oid};<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> @rt0=`$snmpwalk $host $fulloid 2>&1`;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #0000ff">return</span> @rt0;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#Read a file and print out in JSON format</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">sub</span> printjson { <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$first = 1;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">open</span> (INFILE,"<span style="color: #8b0000">$_[0]</span>") <span style="color: #0000ff">or</span> die "<span style="color: #8b0000">Can't open $_[0] $!</span>"; <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">print</span> "<span style="color: #8b0000">{\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">print</span> "<span style="color: #8b0000">\t\"data\":[\n\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">while</span> (<INFILE>)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">{<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> ($key, $value) = <span style="color: #00008b">split</span> (/=/,$_,2);<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">\t,\n</span>" <span style="color: #0000ff">if</span> <span style="color: #0000ff">not</span> $first;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> $first = 0;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">\t{\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">\t\t\"{#KEY}\":\"$key\",\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">\t\t\"{#VALUE}\":\"$value\"\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">\t}\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">print</span> "<span style="color: #8b0000">\n\t]\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">print</span> "<span style="color: #8b0000">}\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p><strong>The getvalue.pl script:</strong></p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#!/usr/bin/perl -w</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">use warnings;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">use FileHandle;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $type=$ARGV[0];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $host=$ARGV[1];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $key=$ARGV[2];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my ($cdir)=$0=~m|(.*)/|;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $timegap=600;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">if</span> ( $<span style="color: #008000">#ARGV != 2 ) {</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">\nUsage: [-i|-s} hostname key \n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">exit</span> 1;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">($type)=$type=~m/-(i|s)/;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$fname="<span style="color: #8b0000">${cdir}/logs/${host}${type}.out</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">open</span>(INFILE, "<span style="color: #8b0000"><$fname</span>") <span style="color: #0000ff">or</span> die "<span style="color: #8b0000">Can't open $fname: $!</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $mtime = (stat($fname))[9];<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">my $ctime=time;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">if</span> ( ($ctime-$mtime) > $timegap ) {<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">$key=<CRITICAL>: $fname hasn't been updated for > $timegap seconds, the outdated value will not be retrieved\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">exit</span> 1<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">@lines=<INFILE>;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">@line1=grep(/$key=/, @lines);<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#print "@line1\n";</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #0000ff">if</span> ( ! defined ( @line1 )) {<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">print</span> "<span style="color: #8b0000">key $key is not found in $fname\n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> <span style="color: #00008b">exit</span> 1<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">}<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">($value)=$line1[0]=~m/$key=(.*)/;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">print</span> "<span style="color: #8b0000">$value \n</span>";<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-29926963870693304632012-11-29T22:29:00.001+11:002012-11-29T22:29:04.568+11:00Authenticate RHEL 6 Linux users by Windows 2008 R2 AD<p>The <a href="http://honglus.blogspot.com.au/2012/11/authenticate-rhel-5-linux-users-by.html">nss_ldap in RHEL 5 for LDAP authentication</a> has been obsolete in RHEL 6, the replacement is nss-pam-ldapd. But the preferred method for LDAP authentication in RHEL 6 is System Security Services Daemon (<a href="http://fedoraproject.org/wiki/Features/SSSD">SSSD</a>) (in fact, RHEL 5.6 or later supports SSSD ). <br /><strong>SSSD unique  features:</strong> <br /> - Credentials caching, user can still login when LDAP server is offline. <br /> - Persistent connection, reducing the overhead of opening a new socket for each request <br /> - support for multiple LDAP/NIS domains</p> <p>Install SSSD packages </p> <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$yum install sssd sssd-client</pre></pre><br /><br /><p>Run the following command, which will make necessary changes in /etc/krb5.conf, /etc/sssd/sssd.conf, /etc/nsswitch.conf, /etc/pam.d/</p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$authconfig --enablesssd --ldapserver=ldap://adc.ad.example.com --ldapbasedn="<span style="color: #8b0000">OU=_USERS,DC=ad,DC=example,DC=com</span>" --enablerfc2307bis --enablesssdauth --krb5kdc=adc.ad.example.com --krb5realm=AD.EXAMPLE.COM --disableforcelegacy --enablelocauthorize --enablemkhomedir --updateall<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p>All files should be updated automatically, only /etc/sssd/sssd.conf need to be customized. The following is an example file with minimum parameters needed.</p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">#cat /etc/sssd/sssd.conf<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[sssd]<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">config_file_version = 2<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">services = nss, pam<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">domains = <span style="color: #0000ff">default</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[nss]<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">#debug_level=7<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[pam]<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[domain/<span style="color: #0000ff">default</span>]<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_id_use_start_tls = <span style="color: #0000ff">False</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">cache_credentials = <span style="color: #0000ff">True</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">#Without enumerate = <span style="color: #0000ff">True</span>, users won’t be show from ‘getent passwd’ output.<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">enumerate = <span style="color: #0000ff">True</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">id_provider = ldap<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">auth_provider = krb5<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">chpass_provider = krb5<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_schema = rfc2307bis<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_force_upper_case_realm = <span style="color: #0000ff">True</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_user_object_class = user<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_group_object_class = group<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_user_gecos = displayName<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_user_home_directory = unixHomeDirectory<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_uri = ldap://adc.ad.example.com<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_search_base = OU=_USERS,DC=ad,DC=example,DC=com<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_user_search_base = OU=_USERS,DC=ad,DC=example,DC=com<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_group_search_base = OU=_GROUPS,DC=ad,DC=example,DC=com<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_default_bind_dn = CN=svc_ldap_client,OU=MGT,OU=_USERS,DC=ad,DC=example,DC=com<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_default_authtok_type = password<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_default_authtok = P@ss123<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ldap_tls_cacertdir = /etc/openldap/cacerts<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">krb5_server = adc.ad.example.com<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">krb5_kpasswd = adc.ad.example.com<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">krb5_realm = AD.EXAMPLE.COM<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-58542921239639318982012-11-29T22:17:00.001+11:002012-12-13T22:50:50.389+11:00Authenticate RHEL 5 Linux users by Windows 2008 R2 AD<a href="http://honglus.blogspot.com.au/2011/08/authenticate-linux-users-by-windows-ad.html">My previous post</a> was tested on Windows 2003 AD, which use non-RFC compliant scheme, Windows 2003 R2 or later is RFC2307bis compliant, the following is tested on Windows 2008 R2, but it should be working for Windows 2003 R2 and Windows 2008 as well. <br />The following use nss_ldap to do AD authentication by Kerberos, if you use RHEl 5.6 or later, you may consider  System Security Services Daemon (SSSD), which offer many great features. <br /> <b>Setup Windows AD</b> <br />Windows 2008 R2 AD has built-in component to perform the same function of “Windows services for Unix” in Windows 2003, it is named “identity management for Unix” <br />Install “identity management for Unix” by clicking “Add Role Services” under role of “Active Directory Domain services”. Choose all three sub-components in identity management for Unix.(note: QLOGIC SANsurfer software conflicts with RPC services, remove it before install identity management for Unix) <br />Setup ldapbind user, create test user, test group and set Unix attributes as the previous post <br /><b>Setup configuration files</b> <br />1.    Configure /etc/ldap.conf <br />nss_map_attribute in Windows 2008 R2 is different to Windows 2003, the following is a sample file <br /> <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: green">#cat /etc/ldap.conf</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">base OU=_USERS,DC=AD,DC=example,DC=com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">BINDDN CN=svc_ldap_client,OU=MGT,OU=_USERS,DC=AD,DC=example,DC=com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">BINDPW Pass123</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">timelimit 60</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">bind_timelimit 10</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">#by default, if ldap server is not reachable, it will retry long time before giving up,</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"># nss_reconnect_tries 1 limit it to be less than a minute. </pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_reconnect_tries 1</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_map_objectclass posixAccount user</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_map_objectclass shadowAccount user</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_map_objectclass posixGroup group</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_map_attribute uid sAMAccountName</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: green">#nss_map_attribute uidNumber uidNumber</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: green">#nss_map_attribute gidNumber gidNumber</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_map_attribute gecos name</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_map_attribute homeDirectory unixHomeDirectory</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: green">#nss_map_attribute loginShell loginShell</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_map_attribute shadowLastChange pwdLastSet</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_base_password OU=_USERS,DC=AD,DC=example,DC=com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_base_shadow OU=_USERS,DC=AD,DC=example,DC=com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_base_group OU=_GROUPS, DC=AD,DC=example,DC=com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">pam_login_attribute sAMAccountName</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">pam_filter objectclass=User</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">pam_password ad</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">nss_initgroups_ignoreusers root,ldap,named,avahi,haldaemon,dbus,radvd,tomcat,radiusd,news,mailman,nscd,gdm</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: green">#adc.ad.example.com is alias DNS name load balanced to DCs</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">uri ldap://adc.ad.example.com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">ssl no</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">tls_cacertdir /etc/openldap/cacerts</pre></pre><br />2.Configure /etc/krb5.conf, no difference to Windows 2003 AD<br /><br /><br /><br /><br /><br /><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: green">#cat /etc/krb5.conf </span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[logging]</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> default = FILE:/var/log/krb5libs.log</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> kdc = FILE:/var/log/krb5kdc.log</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> admin_server = FILE:/var/log/kadmind.log</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[libdefaults]</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> default_realm = AD.EXAMPLE.COM</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> dns_lookup_realm = <span style="color: blue">false</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> dns_lookup_kdc = <span style="color: blue">false</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> ticket_lifetime = 24h</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> forwardable = yes</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[realms]</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> AD.EXAMPLE.COM = {</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> kdc = adc.ad.example.com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> admin_server=adc.ad.example.com</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> }</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[domain_realm]</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> example.com = AD.EXAMPLE.COM</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> .example.com = AD.EXAMPLE.COM</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">[appdefaults]</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> pam = {</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> debug = <span style="color: blue">false</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> ticket_lifetime = 36000</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> renew_lifetime = 36000</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> forwardable = <span style="color: blue">true</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> krb4_convert = <span style="color: blue">false</span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> }</pre></pre><br />3.You also need to modify files in /etc/pam.d/ /etc/nsswitch.conf, once you have copied the ldap.conf and krb5.conf files, run the following command to automate the tasks.<br /><br /><br /><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$authconfig --enablecache --enableldap --usemd5 --useshadow --enablelocauthorize --enablekrb5 --enablemkhomedir --update</pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-29001011176087745142012-11-21T22:57:00.001+11:002012-11-21T23:04:34.803+11:00Enable Windows Active Directory Authentication in vSphere 5.1.<p>vSphere Single Sign On is a new feature in vSphere 5.1, vSphere SSO controls authentication service, so you  can no longer  add new authentication provider in vCenter by standard vSphere client. It has to be done in vSphere webclient, which can talk to vSphere SSO service.</p> <p><strong>Steps to add Windows Active Directory provider.</strong> <br />1.Create a generic user in AD for LDAP search, define user and group base DN. <br />2.Install Webclient from vCenter installation media, just like vSphere Client, it doen’t need to be installed on vCenter server. <br />3.Launch Webclient <a href="https://client-ip:9443/vsphere-client">https://client-ip:9443/vsphere-client</a> and login <br />The account used for login is important, if you installed SSO service when login with local account, local account can  login Webclient, But it doesn’t  have permission to configure SSO, you have to login with the default SSO account “admin@System-Domain” created during installation. <br />4.Navigate to Administration/Sign-on and Discovery/configuraiton( the configurion node won’t be shown, if login with local Windows account), and add “+” sign to add identity sources. <br />The login credentials will be sent in clear text with ldap, if it is a concern, enable ldaps by creating certificate <br />The username should be in LDAP syntax, find the exact string in ADSI edit tool in AD.</p> <p><a href="http://lh3.ggpht.com/-6y7SkOK8IZg/UKzBnkAUypI/AAAAAAAAALg/j38j3Ql5bek/s1600-h/clip_image002%25255B4%25255D%25255B3%25255D.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002[4]" border="0" alt="clip_image002[4]" src="http://lh6.ggpht.com/-IhgosovG7dU/UKzBpm7fzJI/AAAAAAAAALo/Bi6Jzgen91s/clip_image002%25255B4%25255D_thumb%25255B1%25255D.jpg?imgmax=800" width="606" height="523" /></a></p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-30849954747314049462012-09-19T23:09:00.001+10:002012-09-19T23:13:53.100+10:00Detect increased new size of existing LUN in RHEL by rescanning FC port without reboot<p>If the usual command : </p> <pre>echo “- - -“ > /sys/class/scsi_host/hostX/scan</pre><br />doesn’t work for FC target, you can try this: <br /><br /><pre>echo 1 > /sys/devices/{PCI-DEVICE-ID} /rescan </pre><br />The path is the device path to the FC target,which may have multiple paths. The scsi-rescan(rescan-scsi-bus.sh) tool in sg3_utils worked great for new LUN but it couldn’t detect the new size of existing LUN neither. The following procedure was tested in RHEL 6.3. <br /><br /><p></p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#Find the PCI ID of your device</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">>lspci | grep -i qlogic<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">15:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">1a:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#Find the file rescan in /sys/devices by filtering PCI ids found above</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">>find /sys/devices -name rescan | egrep '15:00|1a:00'<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">/sys/devices/pci0000:00/0000:00:03.0/0000:15:00.0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">/sys/devices/pci0000:00/0000:00:03.0/0000:15:00.0/host1/rport-1:0-0/target1:0:0/1:0:0:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">/sys/devices/pci0000:00/0000:00:03.0/0000:15:00.0/host1/rport-1:0-1/target1:0:1/1:0:1:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">/sys/devices/pci0000:00/0000:00:07.0/0000:1a:00.0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">/sys/devices/pci0000:00/0000:00:07.0/0000:1a:00.0/host2/rport-2:0-0/target2:0:0/2:0:0:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">/sys/devices/pci0000:00/0000:00:07.0/0000:1a:00.0/host2/rport-2:0-1/target2:0:1/2:0:1:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#kick off rescan by updating rescan file in each port</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">echo 1 > /sys/devices/pci0000:00/0000:00:03.0/0000:15:00.0/host1/rport-1:0-0/target1:0:0/1:0:0:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">echo 1 > /sys/devices/pci0000:00/0000:00:03.0/0000:15:00.0/host1/rport-1:0-1/target1:0:1/1:0:1:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">echo 1 > /sys/devices/pci0000:00/0000:00:07.0/0000:1a:00.0/host2/rport-2:0-0/target2:0:0/2:0:0:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">echo 1 > /sys/devices/pci0000:00/0000:00:07.0/0000:1a:00.0/host2/rport-2:0-1/target2:0:1/2:0:1:0/rescan<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000"># messages log file show that the new size was detected.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">>tail -f /var/log/messages<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 09:56:10 server1 kernel: sd 1:0:1:0: [sdc] 12884901888 512-byte logical blocks: (6.59 TB/6.00 TiB)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 09:56:10 server1 kernel: sdc: detected capacity change from 5497558138880 to 6597069766656<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:57 server1 kernel: sd 1:0:0:0: [sdb] 15032385536 512-byte logical blocks: (7.69 TB/7.00 TiB)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:57 server1 kernel: sdb: detected capacity change from 6597069766656 to 7696581394432<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:57 server1 kernel: sd 1:0:1:0: [sdc] 15032385536 512-byte logical blocks: (7.69 TB/7.00 TiB)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:57 server1 kernel: sdc: detected capacity change from 6597069766656 to 7696581394432<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:57 server1 kernel: sd 2:0:0:0: [sdd] 15032385536 512-byte logical blocks: (7.69 TB/7.00 TiB)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:57 server1 kernel: sdd: detected capacity change from 6597069766656 to 7696581394432<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:58 server1 kernel: sd 2:0:1:0: [sde] 15032385536 512-byte logical blocks: (7.69 TB/7.00 TiB)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sep 19 10:05:58 server1 kernel: sde: detected capacity change from 6597069766656 to 7696581394432<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-12893110382754838002012-09-03T22:20:00.001+10:002012-09-03T22:20:26.460+10:00Create GPT partition for LVM using parted tool<p>Traditional MBR(MSDOS) disk label has limitation of 2^32 (2TiB) in capacity and 15 in partition numbers(including logical partitions), while GUID Partition Table (GPT) supports 2^64 KiB (2 ZiB) and 128 partitions by default.</p> <p>In Linux, fdisk doesn’t support GPT, parted is the common built-in tool for GPT.</p> <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#mpathb is the disk name is in FC SAN with multipath enabled in my test env</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">>parted /dev/mapper/mpathb<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) mklabel gpt<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) mkpart primary ext4 1024kb 2tb<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Warning: The resulting partition is <span style="color: #0000ff">not</span> properly aligned <span style="color: #0000ff">for</span> best performance.<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Ignore/Cancel?<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#This warning indicates the start position of the partition may not aligned with physical sector of the #hard disk. It is very important for harddisk of hardware raid, the start position must be n*stripe size.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#see also: http://honglus.blogspot.com.au/2009/08/align-partitions-on-stripe-boundary-for.html</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#It may also hold true for single hard disk, because even a single harddisk has sector size of 2K,4K #nowadays .</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#To fix the issue, just change the unit from SI to IEC 60027-2 standard</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000"># k- stands for kilo, meaning 1,000 in Metric(SI) Prefix</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000"># ki- stands for kilobinary ("kibi-"), meaning 1,024 in IEC 60027-2 standard</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) help unit<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> unit UNIT set the default unit to UNIT<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> UNIT is one of: s, B, kB, MB, GB, TB, compact, cyl, chs, %, kiB, MiB, GiB, TiB<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) mkpart primary ext4 1024KiB 8TiB<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#the values are accepted without any warning</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) <span style="color: #00008b">print</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">..<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Number Start End Size <a style="color: #ff0000" href="http://www.ruby-doc.org/docs/rdoc/1.9/classes/File.html">File</a> <span style="color: #00008b">system</span> Name Flags<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 1 1049kB 8796GB 8796GB primary<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#1049KB is shown, because the default unit is KB, we change it to KiB</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) unit KiB<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) <span style="color: #00008b">print</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">..<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Number Start End Size <a style="color: #ff0000" href="http://www.ruby-doc.org/docs/rdoc/1.9/classes/File.html">File</a> <span style="color: #00008b">system</span> Name Flags<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 1 1024kiB 8589934592kiB 8589933568kiB primary <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#set LVM flag</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#GPT has reserved GUID for different partitions e.g LVM= E6D6D379-F507-44C2-A23C-238F2A3DF928</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) set 1 lvm on<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">(parted) <span style="color: #00008b">p</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Model: Linux device-mapper (multipath) (dm)<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Disk /dev/mapper/mpathb: 19527106560kiB<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Sector size (logical/physical): 512B/512B<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Partition Table: gpt<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Number Start End Size <a style="color: #ff0000" href="http://www.ruby-doc.org/docs/rdoc/1.9/classes/File.html">File</a> <span style="color: #00008b">system</span> Name Flags<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"> 1 1024kiB 8589934592kiB 8589933568kiB primary lvm<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#create LVM physical volume as usual.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">>pvcreate /dev/mapper/mpathb1<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-15084527829898577272012-08-11T23:00:00.001+10:002012-08-11T23:00:24.941+10:00Clone Windows 2008 R2 on UEFI based Servers<p>Unified Extensible Firmware Interface (UEFI) technology has been widely adopted by x86 servers hardware manufactures such as IBM and DELL to supersede BIOS, but it presents a challenge for operating system cloning, because the boot code is in efi files not MBR, and even efi files are replicated by file copy or sector copy, the files need to be updated for new hardware, the following example demonstrate cloning Windows 2008 R2 by imagex tool in IBM system X servers.</p> <p><strong>In source computer, capture the two partitions after booting from winPE</strong></p> <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#capture Windows system partition after being syspreped.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$imagex /compress fast /capture c: $networkshare:\boot.wim "<span style="color: #8b0000">w2k8 R2 64bit</span>"<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#capture EFT system partition</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#driver letter S: was assigned by diskpart command: diskpart; select disk 0; list volume; select volume 2; assign letter=s:</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$imagex /compress fast /append s: $networkshare:\boot.wim "<span style="color: #8b0000">w2k8 R2 64bit eftsys</span>"<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p><strong>In target computer, create 3 mandatory partitions after booting from winPE</strong></p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#MSR partition is required for partition operations like converting to dynamic disk, encrypting partition.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#“diskpart /s diskpart.txt”</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">$type diskpart.txt<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">select</span> disk 0<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">clean<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">convert gpt<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">rem == 1. System partition =========================<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">create partition efi size=100<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">format</span> quick fs=fat32 label="<span style="color: #8b0000">System</span>"<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">select</span> partition 1<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">assign letter="<span style="color: #8b0000">s</span>"<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">rem == 2. Microsoft Reserved (MSR) partition =======<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">create partition msr size=128<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">rem == 3. Microsoft Windows partition =======<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">create partition primary size=102400<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">select</span> partition 3<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #00008b">format</span> quick fs=ntfs label="<span style="color: #8b0000">Windows</span>"<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">assign letter="<span style="color: #8b0000">c</span>"<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p><strong># In target computer, apply the images </strong></p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">imagex /apply $networkshare\boot.wim 1 c: && imagex /apply $networkshare boot.wim 2 s: <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p><strong>In target computer, update BCD store in EFI system partition </strong></p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">bcdedit -store S:\EFI\Microsoft\Boot\BCD /set {bootmgr} device partition=s:<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">bcdedit -store S:\EFI\Microsoft\Boot\BCD /set {memdiag} device partition=s:<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">bcdedit -store S:\EFI\Microsoft\Boot\BCD /set {default} device partition=c:<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">bcdedit -store S:\EFI\Microsoft\Boot\BCD /set {default} osdevice partition=c:<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">bcdedit -store S:\EFI\Microsoft\Boot\BCD /set {fwbootmgr} displayorder {bootmgr} /addfirst <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p><strong>Reboot target computer, press F1 to go to BIOS setup<br /> <br /></strong>Select the boot file by navigating to <br /><br /> <br />boot manager -> boot from file ->EFI->boot->bootx64.efi<br /><br /> <br />(This file is actually S:\EFI\Microsoft\Boot\bootx64.efi)<br /><br /> <br />After the file(script) is selected, it will call s:\EFI\Microsoft\Boot\bootmgfw.efi which, in turn, will call c:\Windows\system32\winload.efi to boot Windows, Additionally , a new boot entry named “Windows boot manager” will be added as new boot option to the top of boot list in EFI BIOS. So next time, it will boot to Windows automatically without manual intervention.</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-84058184538311499732012-07-06T20:47:00.001+10:002012-07-06T21:04:46.452+10:00Setup VMware vCenter 5 to use Oracle 11g R2 database<p>VMware vCenter supports DB2,Oracle or MS SQL server as backend database, the built-in database for vCenter in Windows is SQL Server 2008 express,which has limits on disk space and memory, it is not suitable for enterprise. For enterprise deployment, it is recommended to use proper database engine, such as Oracle 11g R2 <br /><strong>Install Oracle Database</strong></p> <p>Select a compatible version of Oracle listed in VMware website. <br /><a href="http://www.vmware.com/resources/compatibility/sim/interop_matrix.php">http://www.vmware.com/resources/compatibility/sim/interop_matrix.php</a></p> <p>The Versions used in this test: <br />   - vCentre 5.0.0 build 623373 <br />   - Oracle 11g R2 11.2.0.3.0 </p> <p><strong>Setup Oracle database for vCenter</strong></p> <p>- Create an Oracle SQL login account for vCenter <br />Estimate vCentre database tablespace size requirement. <br />vCenter has a tool to estimate the size. <br />vCenter->administration->Server setting->statistics <br />for example, to keep data of 500 VMs for 1 year needs ~5GB storage </p> <p>old data can be automatically purged by setting up retention policy <br />vCenter->administration->Server setting->database retention policy</p> <p><strong>Extract from “vSphere Installation and Setup” document</strong></p> <pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#1 Log in to a SQL*Plus session with the system account.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#2 Run the following SQL command to create a vCenter Server database user with the correct permissions.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#The script is located in the vCenter Server {installation media}/vcenter/dbschema/DB_and_schema_creation_scripts_oracle.txt file.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#In this example, the user name is VPXADMIN.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">CREATE USER "<span style="color: #8b0000">VPXADMIN</span>" PROFILE "<span style="color: #8b0000">DEFAULT</span>" IDENTIFIED BY "<span style="color: #8b0000">oracle</span>" DEFAULT TABLESPACE<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">"<span style="color: #8b0000">VPX</span>" ACCOUNT UNLOCK;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant connect to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant resource to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant create view to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant create sequence to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant create table to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant create materialized view to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant execute on dbms_lock to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant execute on dbms_job to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant <span style="color: #00008b">select</span> on dba_tablespaces to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant <span style="color: #00008b">select</span> on dba_temp_files to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant <span style="color: #00008b">select</span> on dba_data_files to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">grant unlimited tablespace to VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#By default, the RESOURCE role has the CREATE PROCEDURE, CREATE TABLE, and CREATE</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#SEQUENCE privileges assigned. If the RESOURCE role lacks these privileges, grant them to the vCenter</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#Server database user.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#NOTE Instead of granting unlimited tablespace, you can set a specific tablespace quota. The</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#recommended quota is unlimited with a minimum of at least 500MB. To set an unlimited quota, use the</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#following command.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#alter user "VPXADMIN" quota unlimited on "VPX";</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#If you set a limited quota, monitor the remaining available tablespace to avoid the following error.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#ORA-01536: space quota exceeded for tablespace '<tablespace>'</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#3 (Optional) After you have successfully installed vCenter Server with the Oracle database, you can revoke</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#the following privileges.</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">revoke <span style="color: #00008b">select</span> on dba_tablespaces from VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">revoke <span style="color: #00008b">select</span> on dba_temp_files from VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">revoke <span style="color: #00008b">select</span> on dba_data_files from VPXADMIN;<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre></pre><br /><br /><p><strong>Prepare Windows server for vCenter</strong></p><br /><br /><p>- Install Oracle ODBC client <br /> <br />Download both basic and ODBC client from Oracle website. <br /><br /> <br />instantclient-basic-windows.x64-11.2.0.3.0.zip <br /><br /> <br />instantclient-odbc-windows.x64-11.2.0.3.0.zip </p><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#unzip instantclient-basic-windows.x64-11.2.0.3.0.zip to: </span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">C:\Program Files\Oracle\instantclient_11_2<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">unzip instantclient-odbc-windows.x64-11.2.0.3.0.zip to the same directory as basic installant client<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">run odbc_install.exe <span style="color: #0000ff">in</span> command line<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">C:\Program Files\Oracle\instantclient_11_2>odbc_install.exe<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">Oracle ODBC Driver is installed successfully. <br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">mkdir C:\Program Files\Oracle\instantclient_11_2\network\admin<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#copy tnsnames.ora on Oracle server to the directory </span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#Add new Windows system variable "ORACLE_HOME=C:\Program Files\Oracle\instantclient_11_2" </span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#system variable take effects immediately, open a new command line to check this: </span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">C:\ >echo %ORACLE_HOME%<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">C:\Program Files\Oracle\instantclient_11_2 </pre></pre><br /><br /><p>open "odbc source" in administrative tools, create "system DSN", select oracle driver, type in service name defined in tnsnames.ora,username etc <br /> <br />Make sure "test connection" result is ok</p><br /><p><strong>Install vCenter <br /> <br /></strong>Follow the installation Wizard to install vCenter, you may receive warning about the Oracle client need to be updated, select ok to continue <br /> <br /><strong>Update  vCenter ojdbc client</strong></p><br />the default JDBC client in vCenter maybe old, (you can check its version by renamed ojdbc5.jar to ojdbc5.zip and open it to check meta-inf file) <br /><br /><br /><br /><pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 650px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">cd /d "<span style="color: #8b0000">C:\Program Files\VMware\Infrastructure\tomcat\lib\"<br /></span></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#backup original file</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">copy ojdbc5.jar ojdbc5.jar.orig<br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px"><span style="color: #008000">#overwrite with new ojdbc5.jar from instant client</span><br /></pre><pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 12px">copy C:\Program Files\Oracle\instantclient_11_2\ojdbc5.jar ojdbc5.jar</pre></pre> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-31103131084720688962012-06-04T21:34:00.001+10:002012-06-04T21:34:24.809+10:00Upgrade QLogic FC HBA firmware on IBM System x server<p>I have been researching the method to upgrade device firmware, my aim was to upgrade the firmware before installing operating system and perform the upgrade remotely by IBM RSA console. <br />For IBM system (IMM/UEFI/FGA/DSA) and IBM peripheral device firmware, IBM ToolsCenter Bootable Media Creator(BoMC) is a great tool to create boot CD, which can upgrade IBM system  and IBM peripheral device firmware automatically. <br />However, for IBM OEM product like QLogic HBA, Maybe due to bug,BoMC (v9.2) can’t detect the device, you have to use Qlogic DOS flash tool to do the upgrade. </p> <p><strong>Upgrade Qlogic FC HBA QLE 2560 firmware</strong> <br />1) Visit QLogic website (<a href="http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/Product_detail.aspx?oemid=376)">http://driverdownloads.qlogic.com/QLogicDriverDownloads_UI/Product_detail.aspx?oemid=376)</a> to download  firmware package which includes firmware and DOS flash utility. <br />2) Download DOS boot diskette image(<a href="http://www.allbootdisks.com/downloads/Disks/MS-DOS_Boot_Disk_Download47/Diskette Images/Dos3.3.img">http://www.allbootdisks.com/downloads/Disks/MS-DOS_Boot_Disk_Download47/Diskette Images/Dos3.3.img</a>) <br />3) Download Winimage software(<a href="http://www.winimage.com/)">http://www.winimage.com/)</a> to edit the image by adding Qlogic firmware and flash tools(VPD.EXE, Q25AF232.BIN, update.bat, FLASUTIL.EXE) <br />4) Attach the diskette image by login to IBM RSA console->remote control->tools->launch virtual media->add image. Click map to upload the image, then mount it. <br />5) Boot server to DOS from floppy, run update.bat to update firmware</p> Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-1822605347830719087.post-91437112864090220912012-05-17T21:47:00.002+10:002012-05-17T21:54:48.638+10:00VMware vDS alternative, Cisco Nexus 1000V quickstartCisco Nexus 1000V is a virtual switch running Cisco NX-OS Software, it is similar to vSphere Distributed Switch. <br />
<br />
<strong>The Cisco Nexus 1000V has two main components:</strong><br />
- Virtual supervisor module (VSM) <br />
A VM running in vSphere ESXi server (a standalone ESXi server or a shared ESXi server hosting both VSM and VEM) <br />
Provides CLI interface for managing Nexus 1000v switch <br />
Controls multiple VEM as a single network device <br />
- Virtual Ethernet module (VEM) <br />
An addon module to be installed on ESXi hypervisor, which controls vem daemons. <br />
A kind of vsphere distributed switch <br />
Independent of VSM in terms of operation, if VSM fails, VEM continues continue to forward <br />
traffic, even its parts of configuration can be managed by vemcmd. <br />
<strong>Cisco N1000V specific traffic types:</strong> <br />
- Management traffic: Traffic for the VSM management interface and for VMware vCenter Server falls into <br />
this category. VMware vCenter Server requires access to the VMware ESX management interface to <br />
monitor and configure the VMware ESX host. Management traffic usually has low bandwidth requirements, <br />
but it should be treated as high-priority traffic <br />
- Control traffic: Control traffic is generated by the Cisco Nexus 1000V Series and exchanged between the <br />
primary and secondary VSMs as well as between the VSMs and VEMs. It requires little bandwidth (less <br />
than 7 MB) but demands absolute priority. <br />
- Packet traffic: Packet traffic transports selected packets to the VSM for processing. The bandwidth required <br />
for the packet interface is extremely low, and its use is intermittent. If the Cisco Discovery Protocol and <br />
IGMP features are turned off, there is no packet traffic at all. <br />
- System vlan: system vlan enables VEM to forward traffic even when the communication to VSM is lost. The system VLAN is mandatory for above 3 types of traffic and VMware management interface, it is also recommended for other vmkernel traffic e.g. vMotion,ISCSI/NFS. <br />
<strong>Cisco n1000V requirements:</strong> <br />
vSphere ESX/ESXi 4 or higher (check the Compatibility guide in Cisco website for details) <br />
vSphere ESX/ESXi must has enterprise plus license (n100v is a kind of distributed Switch) <br />
vSphere vCenter (VSM needs to install plugin into vCenter) <br />
ESX/ESXi host must have at least 2 NICs, if you plan to install both VSM and VEM in the same host. <br />
N1000V VM must use thick disk type and network interface must use E1000 <br />
<strong>Cisco n1000v pros and cons</strong> <br />
- Pros: <br />
Because Cisco n1000v running Cisco NX-OS, it offers additional features over vSphere distributed switch. <br />
Central configuration by NX-OS CLI, just feel like a physical switch. E.g all live VMs’s interface can be seen in “show run” , an access list can be applied in the interface. <br />
True end to end QOS, apart from being allocated specific bandwidth by policy-map, traffic leaving Cisco n1000v is marked up with DSCP value, which the upstream Cisco switch understands.VMware NetIOC offer bandwidth allocation by “shares”, but it is local to VMware hypervisor only. (update: VMware,VMware 5 supports IEEE 802.1p CoS value, which makes end to end QOS possible) <br />
True LACP port-channel, VMware doesn’t support LACP bonding without Cisco N1000v <br />
- Cons: <br />
Additional license cost <br />
Unlike distributed switch, which is VMware built-in, VSM is third party VM. Even VSM supports HA and VSM failure doesn’t stop VEM from functioning. Without VSM, it is impossible to make configuration change.<br />
<h4>Cisco n1000v deployment procedures</h4><strong>1) Download software <br />
</strong>Download free trial of ESXi host and vCenter from VMware site, Download free trial of N1000V from Cisco website.(check the compatible guide to determine the exact versions) <br />
In my test, I used <br />
- VMware ESXi 5.0.0 build-474610 <br />
- VMware vCenter Server 5.0.0 build-623373 <br />
- Cisco N1000v version 4.2(1)SV1(5.1) <br />
NOTE: N1000V installation procedure may vary with different versions, the following is for verson 4.2(1)SV1(5.1). <br />
<strong>2) Install ESXi and vCenter</strong> <br />
Create 3 port-groups for management, control and packet traffic of N1000V (You can create separate VLAN for each type, but sharing the same VLAN as management interface of ESXi host is sufficient , so all three port-groups use the same VLAN ID) <br />
<strong>3) Install N1000V VSM</strong> <br />
Unzip the downloaded Cisco N1000V, connect to vCenter, deploy the OVA file located in “Nexus1000v.4.2.1.SV1.5.1\VSM\Install”. Follow the wizard to deploy the OVA (NOTE: use the default setting, disk type must use thick provisioning, NIC must use E1000) <br />
Start up N1000V VM, login to console with the credentials supplied earlier, run “setup” to start the wizard to configure n1000v. most options are self explanatory, the following are noted<br />
<pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Configure Advanced IP options (yes/no)? [n]: no
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Enable the ssh service? (yes/no) [y]: yes
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Configure svs domain parameters? (yes/no) [y]: yes
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Enter SVS Control mode (L2 / L3) : L3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#(VEM-VSM communication can operate in Layer 2 mode or Layer 3 mode, L3 is recommended. </span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">But N1000V is layer 2 device, ip routing is <span style="color: blue;">not</span> supported)
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Configure Advanced IP options (yes/no)? [n]: no
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Enable the ssh service? (yes/no) [y]: yes
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Configure svs domain parameters? (yes/no) [y]: yes
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Enter SVS Control mode (L2 / L3) : L3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#(VEM-VSM communication can operate in Layer 2 mode or Layer 3 mode, L3 is recommended. </span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">But N1000V is layer 2 device, ip routing is <span style="color: blue;">not</span> supported)
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre></pre><br />
<strong>4) Establish connection between VSM and vCenter</strong><br />
<br />
<pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Launch the JAVA installer</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">C:\Nexus1000v.4.2.1.SV1.5.1\VSM\Installer_App>java -jar Nexus1000V-install.jar VC
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Following the wizard to establish connection between VSM and vCenter, the result is that a new distributed switch will be created in “networking “ view in vCenter.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Verify the connection <span style="color: blue;">in</span> N1000V CLI:
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">nv1> show svs connections
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">….
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">config status: Enabled
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">operational status: Connected
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">sync status: Complete
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">version: VMware vCenter Server 5.0.0 build-623373
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">vc-uuid: F1D0CEBA-C365-4F55-830D-A0B9BB6F8520
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Don’t continue to the next step without a successful connection is seen.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre></pre><br />
<br />
<strong>5) Install N1000V VEM</strong><br />
<br />
<br />
<pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">C:\Nexus1000v.4.2.1.SV1.5.1\VSM\Installer_App>java -jar Nexus1000V-install.jar VEM
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Launch the Java installer, which will connect to vCenter and VSM to push VEM module to ESX host.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#You can also install the VEM module manually.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">C:\Nexus1000v.4.2.1.SV1.5.1\VEM\cross_cisco-vem-v140-4.2.1.1.5.1.0-2.0.1.vib
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Transfer the file to ESXi 5 host and run </span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">ESXi>esxcli software vib install -v /tmp/cross_cisco-vem-v140-4.2.1.1.5.1.0-2.0.1.vib
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre></pre><br />
<strong>6) Establish connection between VEM and VSM</strong><br />
<br />
<pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Because VEM and VSM are on the host, you need to put VEM VSM into separate physical NICs in order to migrating from standard switch to N1000V switch.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Create port profile on N1000V</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#create an uplink profile to be linked to ESXi host pNIC</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;"># note the type is Ethernet and switchport is trunk</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">port-profile type ethernet vm-uplink
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">vmware port-group
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport mode trunk
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport trunk allowed vlan 3-10
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">no shutdown
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: darkblue;">system</span> vlan 3,5-6
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">state enabled
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Create port-group for vmkernel management interface.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#note the type is venthernet and “capability l3control” and system vlan are mandatory</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">port-profile type vethernet L3vmkernel
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">capability l3control
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">vmware port-group
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport mode access
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport access vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">no shutdown
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: darkblue;">system</span> vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">state enabled
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;"># the following 3 profiles for N1000V port-groups, system vlan is mandatory</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">port-profile type vethernet ds_ctl
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">vmware port-group
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport mode access
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport access vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">no shutdown
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: darkblue;">system</span> vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">state enabled
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">port-profile type vethernet ds_mgt
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">vmware port-group
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport mode access
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport access vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">no shutdown
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: darkblue;">system</span> vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">state enabled
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">port-profile type vethernet ds_pkt
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">vmware port-group
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport mode access
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport access vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">no shutdown
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: darkblue;">system</span> vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">state enabled
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#the following is for generic VM traffic, vCentre VM will be migrated to this in the first state.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#system vlan is optional</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">port-profile type vethernet vmdata
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">vmware port-group
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport mode access
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">switchport access vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">no shutdown
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: darkblue;">system</span> vlan 3
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">state enabled
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre></pre><br />
After successfully execution of above commands, 5 objects will be created under the switch in “networking” view.<br />
Right click the switch and select “add host”, in select physical adapter, select “vmnic1” in uplink group select “vm-uplink”<br />
Don’t migrate vmk0 yet.<br />
In migrate virtual machine networking, migrate N1000v from standard switch to its N1000V switch , migrate vCentre VM to “vmdata” group.<br />
Make sure N1000V VM and vCenre VM were migrated successfully by checking that “show svs connections”<br />
<br />
Next step is to migrate vmk0.<br />
<br />
Click the N1000V switch, in configuration tab, select “manage hosts”, select migrate vmk0 to “L3vmkernel “ portgroup, now everything has been migrated from vmnic0 to vmnic1, vmnic0 is spare, you can create port-channel in N1000V and then migrate vmnic0 as well.<br />
<br />
Only after a successful migration of vmk0, VEM to VSM connection is established and VEM module is seen in Switch<br />
<br />
<pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">nv1> show <span style="color: blue;">module</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">Mod Ports <a href="http://www.ruby-doc.org/docs/rdoc/1.9/classes/Module.html" style="color: red;">Module</a>-Type Model Status
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">--- ----- -------------------------------- ------------------ ------------
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">1 0 Virtual Supervisor <a href="http://www.ruby-doc.org/docs/rdoc/1.9/classes/Module.html" style="color: red;">Module</a> Nexus1000V active *
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">3 248 Virtual Ethernet <a href="http://www.ruby-doc.org/docs/rdoc/1.9/classes/Module.html" style="color: red;">Module</a> NA ok
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre></pre><br />
<br />
<strong>Other notes:</strong><br />
<br />
Unlike VMware standard switch, port-groups “grow” under a switch, which, in turn, is linked to pNIC, so there is a clear one to one mapping relationship between port-group and pNIC. In N1000V switch, the relationship between port-group and pNIC is in line with VLAN relationship.<br />
<br />
Unlike VMware standard switch,port-group can be tagged for “vMotion” traffic in GUI directly, You have to this for N1000V in following steps<br />
Switch to “hosts and clusters” view, click the host in management tab, click “vSphere Distributed Switch” view, click “manage virtual adapters” add a vmkernel adapter and in connection setting select “use this adapter for vMotion”. <br />
<br />
<br />
<pre style="background-color: #fbfbfb; border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; border-right: #cecece 1px solid; border-top: #cecece 1px solid; min-height: 40px; overflow: auto; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; width: 650px;"><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Sample QOS configuration bound for a port-group</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">policy-map type qos po-vmdata
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: blue;">class</span> <span style="color: blue;">class</span>-default
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">police cir 1500 mbps bc 200 ms conform transmit violate set dscp dscp table pir-markdown-map
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">port-profile type vethernet vmdata
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">service-policy input po-vmdata
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">service-policy output po-vmdata
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#Control VEM in ESXi host directly when VSM is not available.</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"><span style="color: green;">#unblock a port by defining correct system vlan</span>
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">ESXi > vemcmd show port
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">LTL VSM Port Admin Link State PC-LTL SGID Vem Port Type
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">49 DOWN UP BLK 0 testlinux.eth0
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">ESXi > vemset <span style="color: darkblue;">system</span>-vlan 3 ltl 49
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">ESXi > vemcmd show port
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">LTL VSM Port Admin Link State PC-LTL SGID Vem Port Type
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;">49 UP UP FWD 0 testlinux.eth0
</pre><pre style="background-color: #fbfbfb; font-family: consolas,'Courier New',courier,monospace; font-size: 12px; margin: 0em; width: 100%;"></pre></pre><br />
Cisco Nexus 1000V Series Switches download and document links<br />
http://www.cisco.com/en/US/products/ps9902/index.htmlUnknownnoreply@blogger.com0