How to set up and configure ISCSI on RHEL 6
~~~~~ Warning !!! Content posted here are gained through the real world experience or some may come from training or any other Internet sources. Reading this blog may confuse you or may increase understanding of UNIX/Linux operating system and its component. It might help you to land on Real job or may fire your from the Real job. So, use on your own risk !!! No left or right reserved !!! -Kamal ~~~~~
Monday, March 30, 2015
RHEL 7 - Setting up Network Bonding
Steps to set up Network Bonding on RHEL 7
RHEL6/7 - Configure telnet server
RHEL6 - Configure telnet server
telnet is managed by xinetd service on Redhat. To enable telnet server install the package the
# yum search telnet
# yum install telnet-server
# service xinetd status/restart
restart of xinetd does not work telnet. You have to edit the file /etc/xinet.d/telnet and go to 'service telnet' section and set diabled = yes to no.
Once you changed it, restart the inetd service
# service xinetd restart
# chkconfig telnet on && chkconfig xinetd on
If you are using iptable/firewall, add the line below
# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
# service iptables restart
or RHEL7
# systemctl start telnet.socket
# systemctl enable telnet.socket
Firewall entry for RHEL 7
# firewall-cmd --permanent --add-port=23/tcp
# firewall-cmd --reload
Now, to go the client server and try to login to the server.
Note: You should use ssh but there time comes, you have to enable telnet services which is not secure.
telnet is managed by xinetd service on Redhat. To enable telnet server install the package the
# yum search telnet
# yum install telnet-server
# service xinetd status/restart
restart of xinetd does not work telnet. You have to edit the file /etc/xinet.d/telnet and go to 'service telnet' section and set diabled = yes to no.
Once you changed it, restart the inetd service
# service xinetd restart
# chkconfig telnet on && chkconfig xinetd on
If you are using iptable/firewall, add the line below
# vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
# service iptables restart
or RHEL7
# systemctl start telnet.socket
# systemctl enable telnet.socket
Firewall entry for RHEL 7
# firewall-cmd --permanent --add-port=23/tcp
# firewall-cmd --reload
Now, to go the client server and try to login to the server.
Note: You should use ssh but there time comes, you have to enable telnet services which is not secure.
Sunday, March 29, 2015
LVM_FS_Creation
[root@puppet tmp]# more my_LVM
# VG FS Size MPoint
test_vg FS_WWW 500 /www
test_vg FS_WWW2 500 /www2
test_vg FS_WWW3 500 /www3
test_vg FS_WWW4 500 /www4
[root@puppet tmp]# cat my_LVM.sh
#!/bin/sh
#
PATH=$PATH:/bin:/usr/bin; export PATH
echo "Please wait, filesystem creation task on progress ..."
sleep 5
cat my_LVM | grep -v "^#" | while read myvg myfs mysize mymnt
do
lvremove /dev/${myvg}/${myfs}
lvcreate -L ${mysize}M -n ${myfs} ${myvg} 2>/dev/null
mkfs.ext4 /dev/${myvg}/${myfs} 2>/dev/null
mkdir -p ${mymnt}
echo "/dev/${myvg}/${myfs} ${mymnt} ext4 defaults 1 2" >>/etc/fstab
done
mount -a; df -h
echo "Task completed. Please verify"
Saturday, March 28, 2015
sudo-ssh-link
Notes: 3/28/2015
[khem@puppet Desktop]$ id khem
uid=500(khem) gid=500(khem) groups=500(khem),557(larry)
[khem@puppet Desktop]$ ping yahoo.com
PING yahoo.com (206.190.36.45) 56(84) bytes of data.
64 bytes from ir1.fp.vip.gq1.yahoo.com (206.190.36.45): icmp_seq=1 ttl=52 time=87.4 ms
64 bytes from ir1.fp.vip.gq1.yahoo.com (206.190.36.45): icmp_seq=2 ttl=52 time=92.2 ms
^C
--- yahoo.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1927ms
rtt min/avg/max/mdev = 87.482/89.864/92.247/2.401 ms
[khem@puppet Desktop]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/khem/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/khem/.ssh/id_rsa.
Your public key has been saved in /home/khem/.ssh/id_rsa.pub.
The key fingerprint is:
00:0e:f2:be:84:9f:15:48:54:29:eb:71:c2:57:87:7e khem@puppet.mydomain.local
The key's randomart image is:
+--[ RSA 2048]----+
|..+.o. . |
| +.+..o . |
| .oooo.. |
| o= o...E |
|..o=. .S |
| o.+ |
| + |
| |
| |
+-----------------+
[khem@puppet Desktop]$ pwd
/home/khem/Desktop
[khem@puppet Desktop]$ pwd
/home/khem/Desktop
[khem@puppet Desktop]$ cd ../.ssh
[khem@puppet .ssh]$ ls
id_rsa id_rsa.pub known_hosts
[khem@puppet .ssh]$ ls -l
total 12
-rw-------. 1 khem khem 1675 Mar 28 06:36 id_rsa
-rw-r--r--. 1 khem khem 408 Mar 28 06:36 id_rsa.pub
-rw-r--r--. 1 khem khem 395 Mar 1 06:56 known_hosts
[khem@puppet .ssh]$ ssh-copy-id -i id_rsa.pub sham@192.168.0.149
The authenticity of host '192.168.0.149 (192.168.0.149)' can't be established.
RSA key fingerprint is a4:ea:95:ed:0c:53:49:35:f8:bf:89:fc:32:e7:bb:76.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.149' (RSA) to the list of known hosts.
sham@192.168.0.149's password:
Now try logging into the machine, with "ssh 'sham@192.168.0.149'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[khem@puppet .ssh]$ id
uid=500(khem) gid=500(khem) groups=500(khem),557(larry) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[khem@puppet .ssh]$ ssh sham@192.168.0.149
Last login: Thu Mar 26 20:44:28 2015 from mohan.home
[sham@ldap ~]$
===========================================================
Q. Please create a run control script of a file hello.sh which start at runlevel 3 up on reboot.
# cat hello.sh
#!/bin/sh
echo "Testing ....."
echo "Hello.World !!!"
# cd /etc/rc3.d; ls -l S51hello
# ln -s /etc/init.d/hello.sh ./S51hello
Q. Please update a link S51hello at rc3.d from a file located at /opt/apps/hello.sh
# cp hello.sh hello.sh.oldie
# cp /var/tmp/hello.sh /etc/init.d/hello.sh
planning..
ln -s /opt/apps/hello.sh /etc/rc3.d/S51hello
ln -s /opt/apps/hello.sh S51hello
# ls -l S51hello
lrwxrwxrwx. 1 root root 20 Mar 28 09:01 S51hello -> /etc/init.d/hello.sh
# rm S51hello
# ln -s /opt/apps/hello.sh S51hello
ln: creating symbolic link `S51hello': File exists
# ln -s /opt/apps/hello.sh /etc/rc3.d/S51hello
ln: creating symbolic link `/etc/rc3.d/S51hello': File exists
# ln -s /opt/apps/hello.sh /etc/rc3.d/S51hello
# ls -l S51hello
lrwxrwxrwx. 1 root root 18 Mar 28 09:28 S51hello -> /opt/apps/hello.sh
SUDO
----
syntax
user machine/host = command
Q. give user sham access to create account
# visudo
sham ALL = /usr/sbin/useradd, /usr/bin/passwd
Q. Give multiple user to create account.
# visudo
# User Alias
User_Alias MYADMIN = sham,juliet,ramsing
# Command Alias
Cmnd_Alias MYCMD = /usr/sbin/useradd, /usr/bin/passwd
# Host Alias, since we are working on local host, we don't have to create hostalias.
# Specify the user machine command.
# here MYADMIN is user alias, ALL is list of hosts, its local here in this example
# MYCMD is the list of commands that user has access to
MYADMIN ALL=MYCMD
# if you want user without prompting pw
MYADMIN ALL=NOPASSWD: MYCMD
# su - ramsing
$ sudo useradd hari
$ sudo passwd hari
Changing password for user hari.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
[ramsing@ldap ~]$ logout
# for i in sam hari geeta; do usermod -aG sysadmin $i; done
# cat /etc/group
sysadmin:x:505:sam,hari,geeta
# visudo
%sysadmin localhost=NOPASSWD: /usr/sbin/useradd, /usr/bin/passwd
# su - hari
$ sudo useradd devi
$ id devi
uid=506(devi) gid=507(devi) groups=507(devi)
[khem@puppet Desktop]$ id khem
uid=500(khem) gid=500(khem) groups=500(khem),557(larry)
[khem@puppet Desktop]$ ping yahoo.com
PING yahoo.com (206.190.36.45) 56(84) bytes of data.
64 bytes from ir1.fp.vip.gq1.yahoo.com (206.190.36.45): icmp_seq=1 ttl=52 time=87.4 ms
64 bytes from ir1.fp.vip.gq1.yahoo.com (206.190.36.45): icmp_seq=2 ttl=52 time=92.2 ms
^C
--- yahoo.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1927ms
rtt min/avg/max/mdev = 87.482/89.864/92.247/2.401 ms
[khem@puppet Desktop]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/khem/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/khem/.ssh/id_rsa.
Your public key has been saved in /home/khem/.ssh/id_rsa.pub.
The key fingerprint is:
00:0e:f2:be:84:9f:15:48:54:29:eb:71:c2:57:87:7e khem@puppet.mydomain.local
The key's randomart image is:
+--[ RSA 2048]----+
|..+.o. . |
| +.+..o . |
| .oooo.. |
| o= o...E |
|..o=. .S |
| o.+ |
| + |
| |
| |
+-----------------+
[khem@puppet Desktop]$ pwd
/home/khem/Desktop
[khem@puppet Desktop]$ pwd
/home/khem/Desktop
[khem@puppet Desktop]$ cd ../.ssh
[khem@puppet .ssh]$ ls
id_rsa id_rsa.pub known_hosts
[khem@puppet .ssh]$ ls -l
total 12
-rw-------. 1 khem khem 1675 Mar 28 06:36 id_rsa
-rw-r--r--. 1 khem khem 408 Mar 28 06:36 id_rsa.pub
-rw-r--r--. 1 khem khem 395 Mar 1 06:56 known_hosts
[khem@puppet .ssh]$ ssh-copy-id -i id_rsa.pub sham@192.168.0.149
The authenticity of host '192.168.0.149 (192.168.0.149)' can't be established.
RSA key fingerprint is a4:ea:95:ed:0c:53:49:35:f8:bf:89:fc:32:e7:bb:76.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.149' (RSA) to the list of known hosts.
sham@192.168.0.149's password:
Now try logging into the machine, with "ssh 'sham@192.168.0.149'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[khem@puppet .ssh]$ id
uid=500(khem) gid=500(khem) groups=500(khem),557(larry) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[khem@puppet .ssh]$ ssh sham@192.168.0.149
Last login: Thu Mar 26 20:44:28 2015 from mohan.home
[sham@ldap ~]$
===========================================================
Q. Please create a run control script of a file hello.sh which start at runlevel 3 up on reboot.
# cat hello.sh
#!/bin/sh
echo "Testing ....."
echo "Hello.World !!!"
# cd /etc/rc3.d; ls -l S51hello
# ln -s /etc/init.d/hello.sh ./S51hello
Q. Please update a link S51hello at rc3.d from a file located at /opt/apps/hello.sh
# cp hello.sh hello.sh.oldie
# cp /var/tmp/hello.sh /etc/init.d/hello.sh
planning..
ln -s /opt/apps/hello.sh /etc/rc3.d/S51hello
ln -s /opt/apps/hello.sh S51hello
# ls -l S51hello
lrwxrwxrwx. 1 root root 20 Mar 28 09:01 S51hello -> /etc/init.d/hello.sh
# rm S51hello
# ln -s /opt/apps/hello.sh S51hello
ln: creating symbolic link `S51hello': File exists
# ln -s /opt/apps/hello.sh /etc/rc3.d/S51hello
ln: creating symbolic link `/etc/rc3.d/S51hello': File exists
# ln -s /opt/apps/hello.sh /etc/rc3.d/S51hello
# ls -l S51hello
lrwxrwxrwx. 1 root root 18 Mar 28 09:28 S51hello -> /opt/apps/hello.sh
SUDO
----
syntax
user machine/host = command
Q. give user sham access to create account
# visudo
sham ALL = /usr/sbin/useradd, /usr/bin/passwd
Q. Give multiple user to create account.
# visudo
# User Alias
User_Alias MYADMIN = sham,juliet,ramsing
# Command Alias
Cmnd_Alias MYCMD = /usr/sbin/useradd, /usr/bin/passwd
# Host Alias, since we are working on local host, we don't have to create hostalias.
# Specify the user machine command.
# here MYADMIN is user alias, ALL is list of hosts, its local here in this example
# MYCMD is the list of commands that user has access to
MYADMIN ALL=MYCMD
# if you want user without prompting pw
MYADMIN ALL=NOPASSWD: MYCMD
# su - ramsing
$ sudo useradd hari
$ sudo passwd hari
Changing password for user hari.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
[ramsing@ldap ~]$ logout
# for i in sam hari geeta; do usermod -aG sysadmin $i; done
# cat /etc/group
sysadmin:x:505:sam,hari,geeta
# visudo
%sysadmin localhost=NOPASSWD: /usr/sbin/useradd, /usr/bin/passwd
# su - hari
$ sudo useradd devi
$ id devi
uid=506(devi) gid=507(devi) groups=507(devi)
Friday, March 20, 2015
How to configure network on RHEL7
Steps to configure network on RHEL7
Monday, March 16, 2015
showmount command - get nfs share
# more showmount.ksh
#!/bin/ksh
server=`echo $1 | cut -f1 -d':'`
fs=`echo $1 | cut -f2 -d':'`
showmount -e $server | grep "$fs"
#
Friday, March 13, 2015
How To install/repair grub on RHEL 6
How To install grub.
If you have corrputed grub, you can install it using the follwing instructions.
Pre-requisite
1. Access to OS boot image or CD.
2. Access to console if virtual environment.
Steps
1. Boot your system using your boot (1st cd/DVD/Image) image.
2. Boot your system and go to rescue mode
linux rescue
Note: Make sure you have same version of OS copy that of the installed OS.
3. Just follow the prompt.
The rescue environment will try to find the Linux installation and mount it under /mnt/sysimage.
Your root fs is mounted at /mnt/sysimage and cd to it.
# cd chroot /mnt/sysimage
if you know your disk, just run the grub install command.
grub-install /dev/sda
exit from the prmpt and boot the system.
9. System will Reboot !!! enjoy
If you have corrputed grub, you can install it using the follwing instructions.
Pre-requisite
1. Access to OS boot image or CD.
2. Access to console if virtual environment.
Steps
1. Boot your system using your boot (1st cd/DVD/Image) image.
2. Boot your system and go to rescue mode
linux rescue
Note: Make sure you have same version of OS copy that of the installed OS.
3. Just follow the prompt.
The rescue environment will try to find the Linux installation and mount it under /mnt/sysimage.
Your root fs is mounted at /mnt/sysimage and cd to it.
# cd chroot /mnt/sysimage
if you know your disk, just run the grub install command.
grub-install /dev/sda
exit from the prmpt and boot the system.
9. System will Reboot !!! enjoy
Sunday, March 8, 2015
RHEL7 - How to assign ip address
How to assign static ip to RHEL 7 host.
Note: Network Manager is installed by default.
To verify the status of Network Manager service:
$ systemctl status NetworkManager.service
under Active section, you will see active (running)
Find out the active interface managed by Network Manager
$ nmcli dev status
You will find the output with status.
Assigning static IP without Network Manager
Go to network config location
# cd /etc/sysconfig/network-scripts
# vi ifcfg-interface
Now change the following parameter
BOOTPROTO=static
IPADDR=192.168.10.120
NETMASK=255.255.255.0
NM_CONTROLLED=no
ONBOOT=yes
wq!
other stuff, you can leave as it is not you can remove all reference to ipv6
Restart netwok service
# systemctl restart network.service
Verify if ip is assigned
# ip add
Using Network Manager to set up ip address
nmtui (Network Manager Text User Interface) can be used to configure on terminal window.
# yum search NetworkManager
# yum install NetworkManager-tui
find your interface and use nmtui to configure it.
# nmtui edit interface
it infact allow you to make changes to /etc/sysconfig/network-scripts/ifcfg.interface file.
make changes based on your requirement options.
and restart your service
# systemctl restart network.service
Please remember to add gateway info either on ifcfg-interface or /etc/sysconfig/network file
Find the size of the disk that is part of ASM disk
# lvs
# fdisk -l
# multipath -ll | more
# multipath -ll | grep -A 1 ASMDISK
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/[features=1//'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/[features=1//'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/\[features=1//'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/\[features=1//' | grep ASM
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/\[features=1//' | grep ASM
# multipath -ll | grep -A 1 ASMDISK | awk '/ASMDISK/ {print $1} /size=/ {print substr($0,1,11)}' | awk '/ASMDISK/ {l1=$0; getline; print l1 " " $0}' | sort
ASMDISK01 [size=101G]
ASMDISK02 [size=101G]
ASMDISK02 [size=101G]
ASMDISK04 [size=101G]
ASMDISK05 [size=101G]
ASMDISK06 [size=101G]
ASMDISK07 [size=101G]
ASMDISK08 [size=101G]
ASMDISK09 [size=101G]
ASMDISK10 [size=101G]
ASMDISK19 [size=101G]
ASMDISK21 [size=101G]
# ls -l /dev/mapper
# multipath -ll
# multipath -ll | grep -A 1 3600
# multipath -ll | grep -A 1 3600
SANDISK03 (360060160ccd02600481caca40112e011) dm-2 DGC,VRAID
[size=100G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
--
SANDISK02 (360060160ccd02600491caca40112e011) dm-0 DGC,VRAID
[size=100G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
--
SANDISK01 (360060160ccd026004a1caca40112e011) dm-1 DGC,VRAID
[size=100G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p3 20G 5.4G 14G 30% /
/dev/mapper/system-oraclelv
34G 208M 32G 1% /opt/oracle
/dev/mapper/system-datalv
4.9G 885M 3.8G 19% /data
/dev/mapper/system-data_oraclelv
20G 7.4G 12G 40% /data/oracle
/dev/mapper/sanvg-oradblv1
249G 115G 121G 49% /data/oradata1
/dev/mapper/sanvg-oradblv2
47G 181M 44G 1% /data/oralog1
# pvs -o +devices
PV VG Fmt Attr PSize PFree Devices
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(0)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(384)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(1504)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(1664)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(1824)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G
/dev/mpath/SANDISK01p1 sanvg lvm2 a-- 100.00G 0 /dev/mpath/SANDISK01p1(0)
/dev/mpath/SANDISK02p1 sanvg lvm2 a-- 100.00G 0 /dev/mpath/SANDISK02p1(0)
/dev/mpath/SANDISK03p1 sanvg lvm2 a-- 100.00G 1012.00M /dev/mpath/SANDISK03p1(0)
/dev/mpath/SANDISK03p1 sanvg lvm2 a-- 100.00G 1012.00M /dev/mpath/SANDISK03p1(13314)
/dev/mpath/SANDISK03p1 sanvg lvm2 a-- 100.00G 1012.00M
# vgs -o +devices
VG #PV #LV #SN Attr VSize VFree Devices
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK01p1(0)
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK02p1(0)
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK03p1(0)
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK03p1(13314)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(0)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(384)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(1504)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(1664)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(1824)
# lvs -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices
oradblv1 sanvg -wi-ao 252.00G /dev/mpath/SANDISK01p1(0)
oradblv1 sanvg -wi-ao 252.00G /dev/mpath/SANDISK02p1(0)
oradblv1 sanvg -wi-ao 252.00G /dev/mpath/SANDISK03p1(0)
oradblv2 sanvg -wi-ao 47.00G /dev/mpath/SANDISK03p1(13314)
data_oraclelv system -wi-ao 20.00G /dev/cciss/c0d0p5(1824)
datalv system -wi-ao 5.00G /dev/cciss/c0d0p5(1504)
optlv system -wi-ao 12.00G /dev/cciss/c0d0p5(0)
oraclelv system -wi-ao 35.00G /dev/cciss/c0d0p5(384)
tmplv system -wi-ao 5.00G /dev/cciss/c0d0p5(1664)
# fdisk -l
# multipath -ll | more
# multipath -ll | grep -A 1 ASMDISK
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/[features=1//'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/[features=1//'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/\[features=1//'
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/\[features=1//' | grep ASM
# multipath -ll | grep -A 1 ASMDISK | awk '{l1=$0;getline;print l1 " " $0}' | awk '{print $1 " " $5}' | sed -e 's/\[features=1//' | grep ASM
# multipath -ll | grep -A 1 ASMDISK | awk '/ASMDISK/ {print $1} /size=/ {print substr($0,1,11)}' | awk '/ASMDISK/ {l1=$0; getline; print l1 " " $0}' | sort
ASMDISK01 [size=101G]
ASMDISK02 [size=101G]
ASMDISK02 [size=101G]
ASMDISK04 [size=101G]
ASMDISK05 [size=101G]
ASMDISK06 [size=101G]
ASMDISK07 [size=101G]
ASMDISK08 [size=101G]
ASMDISK09 [size=101G]
ASMDISK10 [size=101G]
ASMDISK19 [size=101G]
ASMDISK21 [size=101G]
# ls -l /dev/mapper
# multipath -ll
# multipath -ll | grep -A 1 3600
# multipath -ll | grep -A 1 3600
SANDISK03 (360060160ccd02600481caca40112e011) dm-2 DGC,VRAID
[size=100G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
--
SANDISK02 (360060160ccd02600491caca40112e011) dm-0 DGC,VRAID
[size=100G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
--
SANDISK01 (360060160ccd026004a1caca40112e011) dm-1 DGC,VRAID
[size=100G][features=1 queue_if_no_path][hwhandler=1 emc][rw]
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p3 20G 5.4G 14G 30% /
/dev/mapper/system-oraclelv
34G 208M 32G 1% /opt/oracle
/dev/mapper/system-datalv
4.9G 885M 3.8G 19% /data
/dev/mapper/system-data_oraclelv
20G 7.4G 12G 40% /data/oracle
/dev/mapper/sanvg-oradblv1
249G 115G 121G 49% /data/oradata1
/dev/mapper/sanvg-oradblv2
47G 181M 44G 1% /data/oralog1
# pvs -o +devices
PV VG Fmt Attr PSize PFree Devices
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(0)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(384)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(1504)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(1664)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G /dev/cciss/c0d0p5(1824)
/dev/cciss/c0d0p5 system lvm2 a-- 84.44G 7.44G
/dev/mpath/SANDISK01p1 sanvg lvm2 a-- 100.00G 0 /dev/mpath/SANDISK01p1(0)
/dev/mpath/SANDISK02p1 sanvg lvm2 a-- 100.00G 0 /dev/mpath/SANDISK02p1(0)
/dev/mpath/SANDISK03p1 sanvg lvm2 a-- 100.00G 1012.00M /dev/mpath/SANDISK03p1(0)
/dev/mpath/SANDISK03p1 sanvg lvm2 a-- 100.00G 1012.00M /dev/mpath/SANDISK03p1(13314)
/dev/mpath/SANDISK03p1 sanvg lvm2 a-- 100.00G 1012.00M
# vgs -o +devices
VG #PV #LV #SN Attr VSize VFree Devices
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK01p1(0)
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK02p1(0)
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK03p1(0)
sanvg 3 2 0 wz--n- 299.99G 1012.00M /dev/mpath/SANDISK03p1(13314)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(0)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(384)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(1504)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(1664)
system 1 5 0 wz--n- 84.44G 7.44G /dev/cciss/c0d0p5(1824)
# lvs -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices
oradblv1 sanvg -wi-ao 252.00G /dev/mpath/SANDISK01p1(0)
oradblv1 sanvg -wi-ao 252.00G /dev/mpath/SANDISK02p1(0)
oradblv1 sanvg -wi-ao 252.00G /dev/mpath/SANDISK03p1(0)
oradblv2 sanvg -wi-ao 47.00G /dev/mpath/SANDISK03p1(13314)
data_oraclelv system -wi-ao 20.00G /dev/cciss/c0d0p5(1824)
datalv system -wi-ao 5.00G /dev/cciss/c0d0p5(1504)
optlv system -wi-ao 12.00G /dev/cciss/c0d0p5(0)
oraclelv system -wi-ao 35.00G /dev/cciss/c0d0p5(384)
tmplv system -wi-ao 5.00G /dev/cciss/c0d0p5(1664)
setting up autofs users home dir local and nfs
bash-3.2# cat /etc/auto.home
#!/bin/ksh
NONAS='
# specify local mounts
jay -rw samserv01:/export/home:&
dev -rw samserv01:/export/home:&
ram -rw samserv02:/export/home:&
'
if [ -x /etc/auto_home_local ]; then
exec /etc/auto_home_local $1
exit 0
fi
if ( echo "$NONAS" |grep "^$1[ ]" >/dev/null 2>&1 ); then
echo "$NONAS" | grep "^$1[ ]" | awk '{print $NF}'
exit 0
fi
case $1 in
nobody|nobody2) exit
;;
[rk][0-9][0-9]*) echo sama:/export/home/$1
;;
[A-Za-z]*) echo sam:/export/home/$1
;;
esac
bash-3.2# hostname
myclienthost
bash-3.2#
bash-3.2# ls -l /etc/auto_home_local
/etc/auto_home_local: No such file or directory
#!/bin/ksh
NONAS='
# specify local mounts
jay -rw samserv01:/export/home:&
dev -rw samserv01:/export/home:&
ram -rw samserv02:/export/home:&
'
if [ -x /etc/auto_home_local ]; then
exec /etc/auto_home_local $1
exit 0
fi
if ( echo "$NONAS" |grep "^$1[ ]" >/dev/null 2>&1 ); then
echo "$NONAS" | grep "^$1[ ]" | awk '{print $NF}'
exit 0
fi
case $1 in
nobody|nobody2) exit
;;
[rk][0-9][0-9]*) echo sama:/export/home/$1
;;
[A-Za-z]*) echo sam:/export/home/$1
;;
esac
bash-3.2# hostname
myclienthost
bash-3.2#
bash-3.2# ls -l /etc/auto_home_local
/etc/auto_home_local: No such file or directory
$ more remove-kernel.nsh
#!/opt/bladelogic/NSH/bin/nsh
OLD_KERNEL="kernel-devel-2.6.18-238.el5"
USER_CHOICE=$1
SERVER_FILE=$2
if [ -z $USER_CHOICE ]
then
echo usage: remove-kernel-5.6.nsh --check {server_list_file}
echo usage: remove-kernel-5.6.nsh --remove {server_list_file} --yes
exit 0
fi
if [ -z $SERVER_FILE ]
then
echo usage: remove-kernel-5.6.nsh --check {server_list_file}
echo usage: remove-kernel-5.6.nsh --remove {server_list_file} --yes
exit 0
fi
if [ ! -f $SERVER_FILE ]
then
echo file $SERVER_FILE does not exist
echo please check and try again
exit 4
fi
if [ "$USER_CHOICE" = "--check" ]
then
for i in $(cat $SERVER_FILE)
do
echo
echo checking $i
nexec $i uname -a
nexec $i rpm -qa | grep kernel
done
echo
elif [ "$USER_CHOICE" = "--remove" ]
then
CONFIRM=$3
if [ "$CONFIRM" != "--yes" ]
then
echo
echo please provide the confirmation parameter
echo and try again
exit 8
fi
for i in $(cat $SERVER_FILE)
do
echo
echo removing $i
nexec $i uname -a
# make sure the current kernel is not the one we want to remove
CURR_KERNEL=$(nexec $i uname -r)
if [ "$CURR_KERNEL" = "$OLD_KERNEL" ]
then
echo
echo WARNING!
echo Server $i is running on kernel $CURR_KERNEL
echo this kernel version will NOT be removed!
echo please investigate
echo
else
echo before
nexec $i rpm -qa kernel
echo removing 5.6
nexec $i rpm -e $OLD_KERNEL
echo after
nexec $i rpm -qa kernel
fi
done
echo
else
# no valid choice
echo usage: remove-kernel-5.6.nsh --check {server_list_file}
echo usage: remove-kernel-5.6.nsh --remove {server_list_file}
fi
$
# more master.sh
if [ -f /var/tmp/exclude.file ]
then
mv /var/tmp/exclude.file /var/tmp/sethu/bak/exclude.file.$$
fi
ls /opt/ | egrep -v "TWeagent|autosys|SUNW|sfw|sun|taddm|jumpstart|local|patrol|" | awk '{print "/opt/" $1 "/"}'
ls /usr | egrep -v `cat /var/tmp/usr.d` |awk '{print "/usr/" $1"/"}'
echo list opt and usr do manually
echo /system/ > /var/tmp/exclude.file
cat /etc/mnttab |grep /fmacdata/ | egrep "nfs|autofs" | awk '{print $2}' | sed 's,/fmacdata,,g' >> /var/tmp/sethu/exclude.fmacdata
cat /etc/mnttab |grep /fmac/ | egrep "nfs|autofs" | awk '{print $2}' | sed 's,/fmac,,g' >> /var/tmp/sethu/exclude.fmac
#
$ cat User_compare_script.ksh
for id in `/opt/quest/bin/vastool search -b dc=fhlmc,dc=com cn=hac_$1_gg member 2>/dev/null |cut -f2 -d'='|sed s/,CN//|sed s/,OU//|grep -v -i GG`
do id $id 2>/dev/null;
done | awk -F"(" '{if(NF==3) {print $2" "$3};}' | sed 's/) gid=/ /g' | sed 's/)//' | awk '{print $1}' | sort | uniq>/tmp/$1_oldserver_userlist.txt
for id in `/opt/quest/bin/vastool search -b dc=fhlmc,dc=com cn=hac_$2_gg member 2>/dev/null |cut -f2 -d'='|sed s/,CN//|sed s/,OU//|grep -v -i GG`
do id $id 2>/dev/null;
done | awk -F"(" '{if(NF==3) {print $2" "$3};}' | sed 's/) gid=/ /g' | sed 's/)//' | awk '{print $1}' | sort | uniq>/tmp/$2_newserver_userlist.txt
diff /tmp/$1_oldserver_userlist.txt /tmp/$2_newserver_userlist.txt 2>&1 /dev/null
RESULT=$?
if [ ${RESULT} -ne 0 ]
then
echo "Differences found in the user list between servers $1 and $2 ...."
echo "Please chk the list under tmp ..Output Of the Diff command ...."
diff /tmp/$1_oldserver_userlist.txt /tmp/$2_newserver_userlist.txt | egrep "<|>"
fi
$
bash-3.2# cat /etc/auto_home
#!/bin/ksh
NONAS='
# specify local mounts
jay -rw samserv01:/export/home:&
dev -rw samserv01:/export/home:&
ram -rw samserv02:/export/home:&
'
if [ -x /etc/auto_home_local ]; then
exec /etc/auto_home_local $1
exit 0
fi
if ( echo "$NONAS" |grep "^$1[ ]" >/dev/null 2>&1 ); then
echo "$NONAS" | grep "^$1[ ]" | awk '{print $NF}'
exit 0
fi
case $1 in
nobody|nobody2) exit
;;
[rk][0-9][0-9]*) echo sama:/export/home/$1
;;
[A-Za-z]*) echo sam:/export/home/$1
;;
esac
bash-3.2# hostname
myclienthost
bash-3.2#
bash-3.2# ls -l /etc/auto_home_local
/etc/auto_home_local: No such file or directory
#!/opt/bladelogic/NSH/bin/nsh
OLD_KERNEL="kernel-devel-2.6.18-238.el5"
USER_CHOICE=$1
SERVER_FILE=$2
if [ -z $USER_CHOICE ]
then
echo usage: remove-kernel-5.6.nsh --check {server_list_file}
echo usage: remove-kernel-5.6.nsh --remove {server_list_file} --yes
exit 0
fi
if [ -z $SERVER_FILE ]
then
echo usage: remove-kernel-5.6.nsh --check {server_list_file}
echo usage: remove-kernel-5.6.nsh --remove {server_list_file} --yes
exit 0
fi
if [ ! -f $SERVER_FILE ]
then
echo file $SERVER_FILE does not exist
echo please check and try again
exit 4
fi
if [ "$USER_CHOICE" = "--check" ]
then
for i in $(cat $SERVER_FILE)
do
echo
echo checking $i
nexec $i uname -a
nexec $i rpm -qa | grep kernel
done
echo
elif [ "$USER_CHOICE" = "--remove" ]
then
CONFIRM=$3
if [ "$CONFIRM" != "--yes" ]
then
echo
echo please provide the confirmation parameter
echo and try again
exit 8
fi
for i in $(cat $SERVER_FILE)
do
echo
echo removing $i
nexec $i uname -a
# make sure the current kernel is not the one we want to remove
CURR_KERNEL=$(nexec $i uname -r)
if [ "$CURR_KERNEL" = "$OLD_KERNEL" ]
then
echo
echo WARNING!
echo Server $i is running on kernel $CURR_KERNEL
echo this kernel version will NOT be removed!
echo please investigate
echo
else
echo before
nexec $i rpm -qa kernel
echo removing 5.6
nexec $i rpm -e $OLD_KERNEL
echo after
nexec $i rpm -qa kernel
fi
done
echo
else
# no valid choice
echo usage: remove-kernel-5.6.nsh --check {server_list_file}
echo usage: remove-kernel-5.6.nsh --remove {server_list_file}
fi
$
# more master.sh
if [ -f /var/tmp/exclude.file ]
then
mv /var/tmp/exclude.file /var/tmp/sethu/bak/exclude.file.$$
fi
ls /opt/ | egrep -v "TWeagent|autosys|SUNW|sfw|sun|taddm|jumpstart|local|patrol|" | awk '{print "/opt/" $1 "/"}'
ls /usr | egrep -v `cat /var/tmp/usr.d` |awk '{print "/usr/" $1"/"}'
echo list opt and usr do manually
echo /system/ > /var/tmp/exclude.file
cat /etc/mnttab |grep /fmacdata/ | egrep "nfs|autofs" | awk '{print $2}' | sed 's,/fmacdata,,g' >> /var/tmp/sethu/exclude.fmacdata
cat /etc/mnttab |grep /fmac/ | egrep "nfs|autofs" | awk '{print $2}' | sed 's,/fmac,,g' >> /var/tmp/sethu/exclude.fmac
#
$ cat User_compare_script.ksh
for id in `/opt/quest/bin/vastool search -b dc=fhlmc,dc=com cn=hac_$1_gg member 2>/dev/null |cut -f2 -d'='|sed s/,CN//|sed s/,OU//|grep -v -i GG`
do id $id 2>/dev/null;
done | awk -F"(" '{if(NF==3) {print $2" "$3};}' | sed 's/) gid=/ /g' | sed 's/)//' | awk '{print $1}' | sort | uniq>/tmp/$1_oldserver_userlist.txt
for id in `/opt/quest/bin/vastool search -b dc=fhlmc,dc=com cn=hac_$2_gg member 2>/dev/null |cut -f2 -d'='|sed s/,CN//|sed s/,OU//|grep -v -i GG`
do id $id 2>/dev/null;
done | awk -F"(" '{if(NF==3) {print $2" "$3};}' | sed 's/) gid=/ /g' | sed 's/)//' | awk '{print $1}' | sort | uniq>/tmp/$2_newserver_userlist.txt
diff /tmp/$1_oldserver_userlist.txt /tmp/$2_newserver_userlist.txt 2>&1 /dev/null
RESULT=$?
if [ ${RESULT} -ne 0 ]
then
echo "Differences found in the user list between servers $1 and $2 ...."
echo "Please chk the list under tmp ..Output Of the Diff command ...."
diff /tmp/$1_oldserver_userlist.txt /tmp/$2_newserver_userlist.txt | egrep "<|>"
fi
$
bash-3.2# cat /etc/auto_home
#!/bin/ksh
NONAS='
# specify local mounts
jay -rw samserv01:/export/home:&
dev -rw samserv01:/export/home:&
ram -rw samserv02:/export/home:&
'
if [ -x /etc/auto_home_local ]; then
exec /etc/auto_home_local $1
exit 0
fi
if ( echo "$NONAS" |grep "^$1[ ]" >/dev/null 2>&1 ); then
echo "$NONAS" | grep "^$1[ ]" | awk '{print $NF}'
exit 0
fi
case $1 in
nobody|nobody2) exit
;;
[rk][0-9][0-9]*) echo sama:/export/home/$1
;;
[A-Za-z]*) echo sam:/export/home/$1
;;
esac
bash-3.2# hostname
myclienthost
bash-3.2#
bash-3.2# ls -l /etc/auto_home_local
/etc/auto_home_local: No such file or directory
listing remote server filesystem info
$ more checkfs.ksh
#!/bin/ksh
ssh -q sunserv2.fhlmc.com df -h $1
ssh -q sunserv1.fhlmc.com df -h $1
$ sh checkfs.ksh /opt
#!/bin/ksh
ssh -q sunserv2.fhlmc.com df -h $1
ssh -q sunserv1.fhlmc.com df -h $1
$ sh checkfs.ksh /opt
directory space use
Disk Usage
# more disk-opt.ksh
#!/bin/ksh
sudo du -h /opt | grep G | sed 's/^[ \t]*//' > /tmp/tmp1.$$
while read line
do
space=$(echo $line | awk '{print $1}')
dir=$(echo $line | awk '{print $2}')
usr=$(ls -ld $dir | awk '{print $3}')
echo "$usr $dir $space" >> /tmp/tmp2.$$
done < /tmp/tmp1.$$
cat /tmp/tmp2.$$|sort -k 1
rm -f /tmp/tmp1.$$ /tmp/tmp2.$$
#
# more disk-opt.ksh
#!/bin/ksh
sudo du -h /opt | grep G | sed 's/^[ \t]*//' > /tmp/tmp1.$$
while read line
do
space=$(echo $line | awk '{print $1}')
dir=$(echo $line | awk '{print $2}')
usr=$(ls -ld $dir | awk '{print $3}')
echo "$usr $dir $space" >> /tmp/tmp2.$$
done < /tmp/tmp1.$$
cat /tmp/tmp2.$$|sort -k 1
rm -f /tmp/tmp1.$$ /tmp/tmp2.$$
#
Some scripting practice
# vi mycase.sh
#!/bin/sh
#
if [ $# -lt 1 ]
then
echo
echo "Invalid usage: Usage is $0 <interface>"
echo
exit
fi
if [ -f $0 -a -x $0 ]
then
ifconfig $1 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1
else
chmod u+x $0
ifconfig $1 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1
# echo check the permission
fi
[nepal@localhost lab1]$ cat mycase.sh
#!/bin/sh
echo "Please select from the list below"
echo "start|restart|reload - to restart the process"
echo "stop - to stop the process"
echo "Please enter the selection"
read choice
echo
case $choice in
start|restart|reload)
service httpd restart;;
stop)
service httpd stop;;
*)
echo "Invalid selection"
esac
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat mypara.sh
#!/bin/sh
a=$1
b=$2
echo first value is $1
echo Second value is $2
if test $a == $b
then
echo "A equal to B"
elif [ $a -lt $b ]
then
echo "A is less than B"
elif [ $a -gt $b ]
then
echo "A is greater than B"
else
echo "Selection does not meet the condition"
fi
[nepal@localhost lab1]$
[nepal@localhost lab1]$ more mycase.sh
#!/bin/sh
echo "Please select from the list below"
echo "start|restart|reload - to restart the process"
echo "stop - to stop the process"
echo "Please enter the selection"
read choice
echo
case $choice in
start|restart|reload)
service httpd restart;;
stop)
service httpd stop;;
*)
echo "Invalid selection"
esac
[nepal@localhost lab1]$
[nepal@localhost lab1]$ more mycmd.sh
#!/bin/sh
#
echo the first value is $1
echo the fifth valie is $5
echo the 10th value is ${10}
echo the 10th value is shift $9
echo The 14th value is $14
echo
echo the file name of the script is $0
echo all value passed on the command are: $*
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat king.sh
#!/bin/sh
#
if [ $# -lt 1 ]
then
echo "Please supply the name of a file: usage $0 <filename>"
exit
else
. ./$1
echo "$raja was a king of Nepal"
fi
[nepal@localhost lab1]$ cat raja
raja="Birendra Shah"
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat raja
raja="Birendra Shah"
rani="Aisharya Shah"
[nepal@localhost lab1]$ cat king1.sh
#!/bin/sh
#
# sourcing
. ./raja
echo "$raja was king of Nepal"
echo "$rani was a queen of Nepal"
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat myip
myip() {
ifconfig eth0 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1;
}
[nepal@localhost lab1]$ cat myip.sh
. ./myip
echo The ip address of `hostname` is `myip`
[nepal@localhost lab1]$ sh myip.sh
The ip address of localhost.localdomain is 192.168.10.29
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat myip.sh
. ./myip
echo The ip address of `hostname` is `myip`
[nepal@localhost lab1]$ vi myip.sh
[nepal@localhost lab1]$ sh myip.sh
The ip address of localhost.localdomain is 192.168.10.29
Birendra Shah and Aisharya Shah were popular in Nepal
[nepal@localhost lab1]$ cat myip.sh
. ./myip
. ./raja
echo The ip address of `hostname` is `myip`
echo "$raja and $rani were popular in Nepal"
[nepal@localhost lab1]$ cat myip
myip() {
ifconfig eth0 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1;
}
[nepal@localhost lab1]$ cat raja
raja="Birendra Shah"
rani="Aisharya Shah"
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat listfiles
listfiles() {
ls -l | grep "^-" | tr -s " " | cut -d " " -f9
}
[nepal@localhost lab1]$ listfiles
-bash: listfiles: command not found
[nepal@localhost lab1]$ ls -l listfiles
-rw-rw-r--. 1 nepal nepal 66 Mar 8 07:56 listfiles
[nepal@localhost lab1]$ chmod u+x listfiles
[nepal@localhost lab1]$ listfiles
-bash: listfiles: command not found
[nepal@localhost lab1]$ sh -xv listfiles
listfiles() {
ls -l | grep "^-" | tr -s " " | cut -d " " -f9
}
[nepal@localhost lab1]$ listfiles
-bash: listfiles: command not found
[nepal@localhost lab1]$ . ./listfiles
[nepal@localhost lab1]$ listfiles
cmdp.sh
king1.sh
king.sh
listfiles
mycase.sh
mycmd.sh
myfile1.3324
myfile.3324
myip
myip.sh
mypara.sh
mypat.sh
myshell.sh
raja
usage.sh
[nepal@localhost lab1]$ cat
[nepal@localhost lab1]$ cat >lmfiles
lmf() {
ls -l | grep "^-"| awk '{print $9}'
}
[nepal@localhost lab1]$ lmfiles
-bash: lmfiles: command not found
[nepal@localhost lab1]$ . ./lmfiles
[nepal@localhost lab1]$ lmfiles
-bash: lmfiles: command not found
[nepal@localhost lab1]$ lmf
cmdp.sh
king1.sh
king.sh
listfiles
[nepal@localhost lab1]$ cat lmfiles
lmf() {
ls -l | grep "^-"| awk '{print $9}'
}
users() {
cat /etc/passwd | awk -F: '{print $1}'
}
[nepal@localhost lab1]$ lmf
cmdp.sh
king1.sh
king.sh
listfiles
[nepal@localhost lab1]$ users
root
bin
daemon
Find the list of users who owned directory content
$ ls -lh | awk '{print $3}' | sort | uniq -c | sort -nk 1
/usr/local/bin/yourfile
/usr/local/bin/cool
[nepal@localhost lab1]$ sed 's//usr/local//opt/' forsed
sed: -e expression #1, char 8: unknown option to `s'
[nepal@localhost lab1]$ sed 's/\/usr\/local/\opt/' forsed
opt/bin/myfile
opt/bin/yourfile
opt/bin/cool
[nepal@localhost lab1]$ sed 's/\/usr\/local/\/opt/' forsed
/opt/bin/myfile
/opt/bin/yourfile
/opt/bin/cool
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat forsed
/usr/local/bin/myfile
/usr/local/bin/yourfile
/usr/local/bin/cool
[nepal@localhost lab1]$
[nepal@localhost lab1]$ sed 's/\/usr\/local/\/opt/' forsed
/opt/bin/myfile
/opt/bin/yourfile
/opt/bin/cool
[nepal@localhost lab1]$ sed 's/\/usr\/local/(\/opt)/' forsed
(/opt)/bin/myfile
(/opt)/bin/yourfile
(/opt)/bin/cool
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat names
Ram Sing
Sam bdr
Ajay Sing
Bir Bal
[nepal@localhost lab1]$ sed 's/Sing/Singh/; s/Ram/Shyam/; s/Bir/Bir Bahadur/' names
Shyam Singh
Sam bdr
Ajay Singh
Bir Bahadur Bal
[nepal@localhost lab1]$ sed -e 's/Sing/Singh/' -e 's/Sam/Shyam/' -e 's/Ajay/Ajay Pratap Singh/' names
Ram Singh
Shyam bdr
Ajay Pratap Singh Singh
Bir Bal
[nepal@localhost lab1]$ cat >names.f
s/Sing/Singh/
s/Sam/Shyam/
s/Ajay/Ajay Pratap Singh/
[nepal@localhost lab1]$ sed -f names.f names
Ram Singh
Shyam bdr
Ajay Pratap Singh Singh
Bir Bal
[nepal@localhost lab1]$ cat names
Ram Sing
Sam bdr
Ajay Sing
Bir Bal
[nepal@localhost lab1]$
[nepal@localhost lab1]$ ls -l | grep "^-"
[nepal@localhost lab1]$ ls -l | grep "^-" | awk '{print $9 $5}'
[nepal@localhost lab1]$ ls -l | grep "^-" | awk '{print $9 "\t" $5}'
[nepal@localhost lab1]$ cat names
,Ram Sing
,Sam bdr
,Ajay Sing
,Bir Bal
l
[nepal@localhost lab1]$ awk -F, '{print "Name:" $2}' names
Name:Ram Sing
Name:Sam bdr
Name:Ajay Sing
Name:Bir Bal
[nepal@localhost lab1]$ awk '/VA/' address
[nepal@localhost lab1]$ awk '/VA/' new
newaddr newhile.sh
[nepal@localhost lab1]$ awk '/VA/' newaddr
Barry Chu, 22 East Broadway, Richmond, VA
Harry Peters, 328A Brook Road, Roanoke, VA
[nepal@localhost lab1]$ awk '/VA/ {print $1}' newaddr
Alice
Harry
[nepal@localhost lab1]$ awk -F, '/VA/ {print $1}' newaddr
Marry Chu
Harry Peters
[nepal@localhost lab1]$
[nepal@localhost lab1]$ sed 's/Marry Chu/Barry Johnson/' address >address1;mv address1 address
[nepal@localhost lab1]$ sed 's/Alia Thomas/Anita Ghose/' address >adress1;mv adress1 address; cat address | awk '{print $1}'
Mike
Barry
Anita
#!/bin/sh
#
if [ $# -lt 1 ]
then
echo
echo "Invalid usage: Usage is $0 <interface>"
echo
exit
fi
if [ -f $0 -a -x $0 ]
then
ifconfig $1 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1
else
chmod u+x $0
ifconfig $1 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1
# echo check the permission
fi
[nepal@localhost lab1]$ cat mycase.sh
#!/bin/sh
echo "Please select from the list below"
echo "start|restart|reload - to restart the process"
echo "stop - to stop the process"
echo "Please enter the selection"
read choice
echo
case $choice in
start|restart|reload)
service httpd restart;;
stop)
service httpd stop;;
*)
echo "Invalid selection"
esac
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat mypara.sh
#!/bin/sh
a=$1
b=$2
echo first value is $1
echo Second value is $2
if test $a == $b
then
echo "A equal to B"
elif [ $a -lt $b ]
then
echo "A is less than B"
elif [ $a -gt $b ]
then
echo "A is greater than B"
else
echo "Selection does not meet the condition"
fi
[nepal@localhost lab1]$
[nepal@localhost lab1]$ more mycase.sh
#!/bin/sh
echo "Please select from the list below"
echo "start|restart|reload - to restart the process"
echo "stop - to stop the process"
echo "Please enter the selection"
read choice
echo
case $choice in
start|restart|reload)
service httpd restart;;
stop)
service httpd stop;;
*)
echo "Invalid selection"
esac
[nepal@localhost lab1]$
[nepal@localhost lab1]$ more mycmd.sh
#!/bin/sh
#
echo the first value is $1
echo the fifth valie is $5
echo the 10th value is ${10}
echo the 10th value is shift $9
echo The 14th value is $14
echo
echo the file name of the script is $0
echo all value passed on the command are: $*
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat king.sh
#!/bin/sh
#
if [ $# -lt 1 ]
then
echo "Please supply the name of a file: usage $0 <filename>"
exit
else
. ./$1
echo "$raja was a king of Nepal"
fi
[nepal@localhost lab1]$ cat raja
raja="Birendra Shah"
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat raja
raja="Birendra Shah"
rani="Aisharya Shah"
[nepal@localhost lab1]$ cat king1.sh
#!/bin/sh
#
# sourcing
. ./raja
echo "$raja was king of Nepal"
echo "$rani was a queen of Nepal"
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat myip
myip() {
ifconfig eth0 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1;
}
[nepal@localhost lab1]$ cat myip.sh
. ./myip
echo The ip address of `hostname` is `myip`
[nepal@localhost lab1]$ sh myip.sh
The ip address of localhost.localdomain is 192.168.10.29
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat myip.sh
. ./myip
echo The ip address of `hostname` is `myip`
[nepal@localhost lab1]$ vi myip.sh
[nepal@localhost lab1]$ sh myip.sh
The ip address of localhost.localdomain is 192.168.10.29
Birendra Shah and Aisharya Shah were popular in Nepal
[nepal@localhost lab1]$ cat myip.sh
. ./myip
. ./raja
echo The ip address of `hostname` is `myip`
echo "$raja and $rani were popular in Nepal"
[nepal@localhost lab1]$ cat myip
myip() {
ifconfig eth0 | grep "inet addr" | cut -d ":" -f2 | cut -d " " -f1;
}
[nepal@localhost lab1]$ cat raja
raja="Birendra Shah"
rani="Aisharya Shah"
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat listfiles
listfiles() {
ls -l | grep "^-" | tr -s " " | cut -d " " -f9
}
[nepal@localhost lab1]$ listfiles
-bash: listfiles: command not found
[nepal@localhost lab1]$ ls -l listfiles
-rw-rw-r--. 1 nepal nepal 66 Mar 8 07:56 listfiles
[nepal@localhost lab1]$ chmod u+x listfiles
[nepal@localhost lab1]$ listfiles
-bash: listfiles: command not found
[nepal@localhost lab1]$ sh -xv listfiles
listfiles() {
ls -l | grep "^-" | tr -s " " | cut -d " " -f9
}
[nepal@localhost lab1]$ listfiles
-bash: listfiles: command not found
[nepal@localhost lab1]$ . ./listfiles
[nepal@localhost lab1]$ listfiles
cmdp.sh
king1.sh
king.sh
listfiles
mycase.sh
mycmd.sh
myfile1.3324
myfile.3324
myip
myip.sh
mypara.sh
mypat.sh
myshell.sh
raja
usage.sh
[nepal@localhost lab1]$ cat
[nepal@localhost lab1]$ cat >lmfiles
lmf() {
ls -l | grep "^-"| awk '{print $9}'
}
[nepal@localhost lab1]$ lmfiles
-bash: lmfiles: command not found
[nepal@localhost lab1]$ . ./lmfiles
[nepal@localhost lab1]$ lmfiles
-bash: lmfiles: command not found
[nepal@localhost lab1]$ lmf
cmdp.sh
king1.sh
king.sh
listfiles
[nepal@localhost lab1]$ cat lmfiles
lmf() {
ls -l | grep "^-"| awk '{print $9}'
}
users() {
cat /etc/passwd | awk -F: '{print $1}'
}
[nepal@localhost lab1]$ lmf
cmdp.sh
king1.sh
king.sh
listfiles
[nepal@localhost lab1]$ users
root
bin
daemon
Find the list of users who owned directory content
$ ls -lh | awk '{print $3}' | sort | uniq -c | sort -nk 1
[nepal@localhost lab1]$ cat >forsed
/usr/local/bin/myfile/usr/local/bin/yourfile
/usr/local/bin/cool
[nepal@localhost lab1]$ sed 's//usr/local//opt/' forsed
sed: -e expression #1, char 8: unknown option to `s'
[nepal@localhost lab1]$ sed 's/\/usr\/local/\opt/' forsed
opt/bin/myfile
opt/bin/yourfile
opt/bin/cool
[nepal@localhost lab1]$ sed 's/\/usr\/local/\/opt/' forsed
/opt/bin/myfile
/opt/bin/yourfile
/opt/bin/cool
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat forsed
/usr/local/bin/myfile
/usr/local/bin/yourfile
/usr/local/bin/cool
[nepal@localhost lab1]$
[nepal@localhost lab1]$ sed 's/\/usr\/local/\/opt/' forsed
/opt/bin/myfile
/opt/bin/yourfile
/opt/bin/cool
[nepal@localhost lab1]$ sed 's/\/usr\/local/(\/opt)/' forsed
(/opt)/bin/myfile
(/opt)/bin/yourfile
(/opt)/bin/cool
[nepal@localhost lab1]$
[nepal@localhost lab1]$ cat names
Ram Sing
Sam bdr
Ajay Sing
Bir Bal
[nepal@localhost lab1]$ sed 's/Sing/Singh/; s/Ram/Shyam/; s/Bir/Bir Bahadur/' names
Shyam Singh
Sam bdr
Ajay Singh
Bir Bahadur Bal
[nepal@localhost lab1]$ sed -e 's/Sing/Singh/' -e 's/Sam/Shyam/' -e 's/Ajay/Ajay Pratap Singh/' names
Ram Singh
Shyam bdr
Ajay Pratap Singh Singh
Bir Bal
[nepal@localhost lab1]$ cat >names.f
s/Sing/Singh/
s/Sam/Shyam/
s/Ajay/Ajay Pratap Singh/
[nepal@localhost lab1]$ sed -f names.f names
Ram Singh
Shyam bdr
Ajay Pratap Singh Singh
Bir Bal
[nepal@localhost lab1]$ cat names
Ram Sing
Sam bdr
Ajay Sing
Bir Bal
[nepal@localhost lab1]$
[nepal@localhost lab1]$ ls -l | grep "^-"
[nepal@localhost lab1]$ ls -l | grep "^-" | awk '{print $9 $5}'
[nepal@localhost lab1]$ ls -l | grep "^-" | awk '{print $9 "\t" $5}'
[nepal@localhost lab1]$ cat names
,Ram Sing
,Sam bdr
,Ajay Sing
,Bir Bal
l
[nepal@localhost lab1]$ awk -F, '{print "Name:" $2}' names
Name:Ram Sing
Name:Sam bdr
Name:Ajay Sing
Name:Bir Bal
[nepal@localhost lab1]$ awk '/VA/' address
[nepal@localhost lab1]$ awk '/VA/' new
newaddr newhile.sh
[nepal@localhost lab1]$ awk '/VA/' newaddr
Barry Chu, 22 East Broadway, Richmond, VA
Harry Peters, 328A Brook Road, Roanoke, VA
[nepal@localhost lab1]$ awk '/VA/ {print $1}' newaddr
Alice
Harry
[nepal@localhost lab1]$ awk -F, '/VA/ {print $1}' newaddr
Marry Chu
Harry Peters
[nepal@localhost lab1]$
[nepal@localhost lab1]$ sed 's/Marry Chu/Barry Johnson/' address >address1;mv address1 address
[nepal@localhost lab1]$ sed 's/Alia Thomas/Anita Ghose/' address >adress1;mv adress1 address; cat address | awk '{print $1}'
Mike
Barry
Anita
Friday, March 6, 2015
backout the kernel patch on Redhat
How to backout already installed patch.
I upgraded the server from RHEL 6.3 to RHEL 6.6 and I had to back it out to the old one. And upgrade it to RHEL 6.5. This is how it was done.
[root@sama ~]# yum history
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security,
: subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
2 | Dev <dev> | 2015-02-02 14:20 | I, O, U | 497 E<
1 | System <unset> | 2013-02-22 10:14 | Install | 878 >
history list
Now, you can either do "yum history undo last" or "yum history undo 2" based on the output above.
[root@sama ~]# yum history undo last
Once removal is completed. Reboot the system and run the upgrade. Remember to do "yum clean all" before "yum update"
# yum clean all
Register the key
# rhnreg_ks --activationkey=your-key --serverUrl https://your_server/abc --force
# yum update
once completed, reboot and again register with new channel and update to correct version.
I upgraded the server from RHEL 6.3 to RHEL 6.6 and I had to back it out to the old one. And upgrade it to RHEL 6.5. This is how it was done.
[root@sama ~]# yum history
Loaded plugins: product-id, refresh-packagekit, rhnplugin, security,
: subscription-manager
This system is receiving updates from RHN Classic or RHN Satellite.
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
2 | Dev <dev> | 2015-02-02 14:20 | I, O, U | 497 E<
1 | System <unset> | 2013-02-22 10:14 | Install | 878 >
history list
Now, you can either do "yum history undo last" or "yum history undo 2" based on the output above.
[root@sama ~]# yum history undo last
Once removal is completed. Reboot the system and run the upgrade. Remember to do "yum clean all" before "yum update"
# yum clean all
Register the key
# rhnreg_ks --activationkey=your-key --serverUrl https://your_server/abc --force
# yum update
once completed, reboot and again register with new channel and update to correct version.
Wednesday, March 4, 2015
inode info
Find where inodes are being used
df -i
Basically an inode is used for each file on the filesystem. So running out of inodes generally means you've got a lot of small files laying around. So the question really becomes, "what directory has a large number of files in it?"
so we can use the following command:
# find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
Note: You can always replace the \n with \0 and use sort -z above).
http://unix.stackexchange.com/questions/117093/find-where-inodes-are-being-used
How to check inode information of UFS/VxFS.
1. UFS
# df -n /
/ : ufs
NOTE1: Type of File-Systems: UFS.
# df -t /
/ (/dev/dsk/c1t0d0s0 ): 62683504 blocks 7241984 files
total: 124632118 blocks 7501312 files
NOTE2: Free files: 7241984 (Free inodes)
Total files: 7501312 (Total inodes)
Used files: 259328 (Used inodes / 7501312-7241984=259328)
# df -g /
/ (/dev/dsk/c1t0d0s0 ): 8192 block size 1024 frag size
124632118 total blocks 62683504 free blocks 61437184 available 7501312 total files
7241984 free files 8388608 filesys id
ufs fstype 0x00000004 flag 255 filename length
NOTE3: Shows the same information with other information.
# df -o i /
Filesystem iused ifree %iused Mounted on
/dev/dsk/c1t0d0s0 259328 7241984 3% /
#
NOTE4: 'i' option shows inode information briefly.
2. VxFS (SOLARIS)
# df -n /mnt
/mnt : vxfs
NOTE5: Type of File-system is 'vxfs'.
# df -t /mnt
/mnt (/dev/vx/dsk/tdg/testvol-01): 6254930 blocks 781864 files
total: 6291456 blocks 781868 files
NOTE6: Free files: 781864 (Free inodes)
Total files: 781868 (Total inodes)
Used files: 4 (Used inodes / 781868-781864=4)
# df -g /mnt
/mnt (/dev/vx/dsk/tdg/testvol-01): 8192 block size 1024 frag size
6291456 total blocks 6254930 free blocks 5864012 available 781868 total files
781864 free files 77864769 filesys id
vxfs fstype 0x00000004 flag 255 filename length
# df -e /mnt
Filesystem ifree
/dev/vx/dsk/tdg/testvol-01 781864
# df -o s /mnt
Free Extents by Size
1: 1 2: 0 4: 2
8: 2 16: 1 32: 2
64: 1 128: 2 256: 1
512: 1 1024: 1 2048: 0
4096: 1 8192: 1 16384: 0
32768: 1 65536: 1 131072: 1
262144: 1 524288: 1 1048576: 2
2097152: 0 4194304: 0 8388608: 0
16777216: 0 33554432: 0 67108864: 0
134217728: 0 268435456: 0 536870912: 0
1073741824: 0 2147483648: 0
#
http://www.symantec.com/business/support/index?page=content&id=TECH144018
df -i
Basically an inode is used for each file on the filesystem. So running out of inodes generally means you've got a lot of small files laying around. So the question really becomes, "what directory has a large number of files in it?"
so we can use the following command:
# find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
Note: You can always replace the \n with \0 and use sort -z above).
http://unix.stackexchange.com/questions/117093/find-where-inodes-are-being-used
How to check inode information of UFS/VxFS.
1. UFS
# df -n /
/ : ufs
NOTE1: Type of File-Systems: UFS.
# df -t /
/ (/dev/dsk/c1t0d0s0 ): 62683504 blocks 7241984 files
total: 124632118 blocks 7501312 files
NOTE2: Free files: 7241984 (Free inodes)
Total files: 7501312 (Total inodes)
Used files: 259328 (Used inodes / 7501312-7241984=259328)
# df -g /
/ (/dev/dsk/c1t0d0s0 ): 8192 block size 1024 frag size
124632118 total blocks 62683504 free blocks 61437184 available 7501312 total files
7241984 free files 8388608 filesys id
ufs fstype 0x00000004 flag 255 filename length
NOTE3: Shows the same information with other information.
# df -o i /
Filesystem iused ifree %iused Mounted on
/dev/dsk/c1t0d0s0 259328 7241984 3% /
#
NOTE4: 'i' option shows inode information briefly.
2. VxFS (SOLARIS)
# df -n /mnt
/mnt : vxfs
NOTE5: Type of File-system is 'vxfs'.
# df -t /mnt
/mnt (/dev/vx/dsk/tdg/testvol-01): 6254930 blocks 781864 files
total: 6291456 blocks 781868 files
NOTE6: Free files: 781864 (Free inodes)
Total files: 781868 (Total inodes)
Used files: 4 (Used inodes / 781868-781864=4)
# df -g /mnt
/mnt (/dev/vx/dsk/tdg/testvol-01): 8192 block size 1024 frag size
6291456 total blocks 6254930 free blocks 5864012 available 781868 total files
781864 free files 77864769 filesys id
vxfs fstype 0x00000004 flag 255 filename length
# df -e /mnt
Filesystem ifree
/dev/vx/dsk/tdg/testvol-01 781864
# df -o s /mnt
Free Extents by Size
1: 1 2: 0 4: 2
8: 2 16: 1 32: 2
64: 1 128: 2 256: 1
512: 1 1024: 1 2048: 0
4096: 1 8192: 1 16384: 0
32768: 1 65536: 1 131072: 1
262144: 1 524288: 1 1048576: 2
2097152: 0 4194304: 0 8388608: 0
16777216: 0 33554432: 0 67108864: 0
134217728: 0 268435456: 0 536870912: 0
1073741824: 0 2147483648: 0
#
http://www.symantec.com/business/support/index?page=content&id=TECH144018
Subscribe to:
Posts (Atom)