The UNIX and Linux Forums  


Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Count not correct popeye Shell Programming and Scripting 3 04-22-2008 01:50 PM
how i prepare a c++ code(c code) for implementing my own protocol format amitpansuria High Level Programming 1 09-07-2007 12:09 AM
plz correct this wannalearn Shell Programming and Scripting 8 04-26-2007 08:56 AM
can any body correct the code vivekanandarpat UNIX for Advanced & Expert Users 2 09-16-2005 10:24 AM
Can any body correct the code vivekanandarpat Shell Programming and Scripting 6 09-15-2005 03:16 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 10-29-2008
mansa mansa is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 33
Please correct the code

Hi,

Some part of output:
================
$ hwmgr show scsi
SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST
HWID: DEVICEID HOSTNAME TYPE SUBTYPE OWNER PATH FILE VALID PATH
-------------------------------------------------------------------------
68: 0 mullins disk none 0 1 dsk0 [0/0/0]
69: 1 mullins disk none 0 1 dsk1 [0/1/0]
71: 4 mullins disk none 0 4 scp0 [2/0/0]
72: 5 mullins disk none 2 4 dsk2 [2/0/3]
73: 6 mullins disk none 2 4 dsk3 [2/0/4]
74: 7 mullins disk none 2 4 dsk4 [2/0/6]
75: 8 mullins disk none 2 4 dsk5 [2/0/7]
76: 9 mullins disk none 2 4 dsk6 [2/0/8]
77: 10 mullins disk none 0 4 dsk7 [2/0/9]
78: 11 mullins disk none 0 4 dsk8 [2/0/10]
79: 12 mullins disk none 0 4 dsk9 [2/0/11]
80: 13 mullins disk none 0 4 dsk10 [2/0/12]
================================================================
Main intention of doing this is to meet BID value=35 by using required number of disks.
a[x]=x (unknown value to programmer)varies from machine to machine.
And a[x] value can be found from below code ..
hwmgr show scsi > scsi.tmp
while read line; do
a[x]=`echo $line | grep "dsk" | awk '{ print $7 }'`
Coming to BID concept:
--------------------------------
BID value =(No of partitions * NUM PATH value).
In general each disk has 4 partitions (a,b,g,h) and and for each partition(a,b,g,h) their wll be NUM PATH value.Each partition NUM PATH value will be equal to NUM PATH value of that particular disk.
Example:- Suppose dsk1 has NUM PATH=4 then partition "a" has Total number of paths=4 partition "b" total number of paths=4 Partition "g" total number of paths=4 partition "h" total number of paths=4 Hence,if you use dsk1 then we can have BID value=(No of partitions * NUM PATH)=4*4=16.

So our requirement is to meet BID value=35.
After getting NUM PATH value by above code,we must use the required number of disks to meet BID=35.
Example:Let say dsk2 and dsk3 has NUMPATH=4 then we can get BID value=16+16=32) Still we didnt meet BID=35 and here we must note that we can't use the disk which has NUM PATH=4 now at this stage because 32+4=36 (not equal to 35) so we must use less than NUM PATH=4 , say if you find NUM PATH=1(less than NUM PATH=4)so we can proceede and here we must check how many partitions to be used to meet BID value=35.In this case only 3 partitions are required which has NUM PATH=1 so finally
32+3=35..
========================================================
I wrote the below code as per my above information..
#!/bin/ksh
main() {
set -x
int a[10],b[10];
# array a and b are used to store the paths and partitions for the disks until we get the
proper BID Value
int x = 0,y = 0, BID = 0;
int count=0,t=0;
while [[ $BID -le 35 ]] ; do
x=`expr $x + 1`;
hwmgr show scsi > scsi.tmp
while read line; do
a[x]=`echo $line | grep "dsk" | awk '{ print $7 }'`
done < scsi.tmp
b[x]=4;
BID+=a[x].b[x];
echo $BID;
if [[ $BID -gt 35 ]]; then
y = $BID - 35;
echo $y;
BID-= a[x].b[x];
if [[ count -eq 0 ]]; then
for i in b[x] ; do
t = a[x].i;
if [[ $y -eq $t ]] ; then
b[x] -= i;
BID += a[x].b[x];
count = 0;
break;
fi
count=1;
done
else
if [[ $count -eq 1 ]] ; then
a[x]=0;
b[x]=0;
fi
fi
else
if [[ $BID -eq 35 ]] ; then
break;
fi
fi
done
return;
}

Could you check it and correct me if you have better idea..
Request you to please provide inputs for this...
  #2 (permalink)  
Old 10-29-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Location: Home of 17-time world champion Boston Celtics
Posts: 1,311
Wink Please re-post or edit you question

Use codetags -- the # on the icon bar -- once you highlight your script. This will maintain all the indenting and formatting of your program. Otherwise, it is very difficult to read.
  #3 (permalink)  
Old 10-29-2008
mansa mansa is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 33
Hi,

Please let me know how to " Use codetags -- the # on the icon bar -- as soon as the script starts..

Thanks,
Mansa
  #4 (permalink)  
Old 10-29-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Location: Home of 17-time world champion Boston Celtics
Posts: 1,311
Wink Codetags

Paste your script into the message area.
Highlight your script
Press the # icon to apply CODE tags

This will maintain - what I hope - is a better formatted script.
It is very difficult to follow a script that is not indented at if's and loops.
  #5 (permalink)  
Old 10-29-2008
mansa mansa is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 33
Hi,

Some part of output:
================
$ hwmgr show scsi
SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST
HWID: DEVICEID HOSTNAME TYPE SUBTYPE OWNER PATH FILE VALID PATH
-------------------------------------------------------------------------
68: 0 mullins disk none 0 1 dsk0 [0/0/0]
69: 1 mullins disk none 0 1 dsk1 [0/1/0]
71: 4 mullins disk none 0 4 scp0 [2/0/0]
72: 5 mullins disk none 2 4 dsk2 [2/0/3]
73: 6 mullins disk none 2 4 dsk3 [2/0/4]
74: 7 mullins disk none 2 4 dsk4 [2/0/6]
75: 8 mullins disk none 2 4 dsk5 [2/0/7]
76: 9 mullins disk none 2 4 dsk6 [2/0/8]
77: 10 mullins disk none 0 4 dsk7 [2/0/9]
78: 11 mullins disk none 0 4 dsk8 [2/0/10]
79: 12 mullins disk none 0 4 dsk9 [2/0/11]
80: 13 mullins disk none 0 4 dsk10 [2/0/12]
================================================================
Main intention of doing this is to meet BID value=35 by using required number of disks.
a[x]=x (unknown value to programmer)varies from machine to machine.
And a[x] value can be found from below code ..
hwmgr show scsi > scsi.tmp
while read line; do
a[x]=`echo $line | grep "dsk" | awk '{ print $7 }'`
Coming to BID concept:
--------------------------------
BID value =(No of partitions * NUM PATH value).
In general each disk has 4 partitions (a,b,g,h) and and for each partition(a,b,g,h) their wll be NUM PATH value.Each partition NUM PATH value will be equal to NUM PATH value of that particular disk.
Example:- Suppose dsk1 has NUM PATH=4 then partition "a" has Total number of paths=4 partition "b" total number of paths=4 Partition "g" total number of paths=4 partition "h" total number of paths=4 Hence,if you use dsk1 then we can have BID value=(No of partitions * NUM PATH)=4*4=16.

So our requirement is to meet BID value=35.
After getting NUM PATH value by above code,we must use the required number of disks to meet BID=35.
Example:Let say dsk2 and dsk3 has NUMPATH=4 then we can get BID value=16+16=32) Still we didnt meet BID=35 and here we must note that we can't use the disk which has NUM PATH=4 now at this stage because 32+4=36 (not equal to 35) so we must use less than NUM PATH=4 , say if you find NUM PATH=1(less than NUM PATH=4)so we can proceede and here we must check how many partitions to be used to meet BID value=35.In this case only 3 partitions are required which has NUM PATH=1 so finally
32+3=35..
========================================================
I wrote the below code as per my above information..

Code:
#!/bin/ksh
main() {
set -x
int a[10],b[10];
# array a and b are used to store the paths and partitions for the disks until we get the 
proper BID Value
int x = 0,y = 0, BID = 0;
int count=0,t=0;
while [[ $BID -le 35 ]] ; do
x=`expr $x + 1`;
hwmgr show scsi > scsi.tmp
while read line; do
a[x]=`echo $line | grep "dsk" | awk '{ print $7 }'`
done < scsi.tmp
b[x]=4;
BID+=a[x].b[x];
echo $BID;
if [[ $BID -gt 35 ]]; then
y = $BID - 35;
echo $y;
BID-= a[x].b[x];
if [[ count -eq 0 ]]; then
for i in b[x] ; do
t = a[x].i;
if [[ $y -eq $t ]] ; then
b[x] -= i;
BID += a[x].b[x];
count = 0;
break;
fi
count=1;
done
else
if [[ $count -eq 1 ]] ; then
a[x]=0;
b[x]=0;
fi
fi
else
if [[ $BID -eq 35 ]] ; then
break;
fi
fi
done
return;
}
Could you check it and correct me if you have better idea..
Request you to please provide inputs for this...
  #6 (permalink)  
Old 10-29-2008
mansa mansa is offline
Registered User
  
 

Join Date: Oct 2008
Posts: 33
Hi,

As per your suggestions,i modified in my previous update..
Please let me know incase if you need further modification..



Thanks,
Mansa.
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 05:06 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0