Simple script


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Simple script
# 1  
Old 06-21-2010
Simple script

Hi All,

First time poster so be gentle - Also apologies if this is in the wrong section.

I am not a unix administrator but as a Storage administrator know enouh to get me by for what I need to do.

However I am having a slow night-shift so I am playing about with a bit of scripting to make getting information of an EMC array a little easier.

I have this command:
Code:
symcfg -sid 1474 -fa all list

which gives this output:


Code:
Symmetrix ID: 000284701474
           S Y M M E T R I X    F I B R E   D I R E C T O R S
    Dir    Port  WWN               VCM      Volume Set   Pnt to Pnt
                                   Enabled  Addressing
    FA-3A   0    500604843e0cc882  No       No           Yes
    FA-3A   1    500604843e0cc8a2  Yes      Yes          Yes
    FA-4A   0    500604843e0cc883  Yes      No           Yes
    FA-4A   1    500604843e0cc8a3  Yes      Yes          Yes
    FA-6A   0    500604843e0cc885  No       No           Yes
    FA-6A   1    500604843e0cc8a5  Yes      No           Yes
    FA-11A  0    500604843e0cc88a  Yes      No           Yes
    FA-11A  1    500604843e0cc8aa  Yes      Yes          Yes
    FA-13A  0    500604843e0cc88c  No       No           Yes
    FA-13A  1    500604843e0cc8ac  Yes      No           Yes
    FA-14A  0    500604843e0cc88d  Yes      No           Yes
    FA-14A  1    500604843e0cc8ad  Yes      No           Yes
    FA-3B   0    500604843e0cc892  Yes      No           Yes
    FA-3B   1    500604843e0cc8b2  Yes      No           Yes
    FA-4B   0    500604843e0cc893  No       No           Yes
    FA-4B   1    500604843e0cc8b3  Yes      No           Yes
    FA-6B   0    500604843e0cc895  Yes      No           Yes
    FA-6B   1    500604843e0cc8b5  Yes      Yes          Yes
    FA-11B  0    500604843e0cc89a  No       No           Yes
    FA-11B  1    500604843e0cc8ba  Yes      No           Yes
    FA-13B  0    500604843e0cc89c  Yes      No           Yes
    FA-13B  1    500604843e0cc8bc  Yes      Yes          Yes
    FA-14B  0    500604843e0cc89d  No       No           Yes
    FA-14B  1    500604843e0cc8bd  Yes      Yes          Yes

What I want to do is pass column 1 & 2 into another command for different output.
The twist is I in column 1 I need to get rid of the "FA-" bit.

I have tried something like:

Code:
symcfg -sid 1474 -fa all list | awk '{print $1, $2}' | grep -v 'FA-'

However this removes the whole FA- and the number and letter afterwards.

The plan is to eventually do something like:

Code:
for i in `symcfg -sid 1474 -fa all list | awk '{print $1}' | grep -v 'FA-'`
for n in `symcfg -sid 1474 -fa all list | awk '{print $2}'`
do
echo "symmaskdb -sid 1474 -dir $i -p $n  list database -nop"
symmaskdb -sid 1474 -dir $i -p $n  list database -nop >> 1474_list_database
done

I also sure I am going to get problems with the above command as well but first things first.

Any help you can give would be great.

Cheers
Colin

Last edited by vgersh99; 06-21-2010 at 05:28 PM.. Reason: code tags, please!
# 2  
Old 06-21-2010
Hi, perhaps this
Code:
awk -F'[ \t-]*' '{print $2, $3}'

is the filter you are looking for..

---------- Post updated at 22:32 ---------- Previous update was at 22:27 ----------

I think it may be easier to just use shell, like so for instance:
Code:
symcfg -sid 1474 -fa all list | {
read;read;read;read                                   # cut out the first 4 lines of the output
while IFS='[ \t-]' read x director port x; do
  echo "symmaskdb -sid 1474 -dir $director -p $port list database -nop"
done
}

# 3  
Old 06-21-2010
Scrutinizer,
Thanks for the response dude however like I said I am no administrator so can guess at what these commands do but that is about it. unfortuantely neither are working for me.

Quote:
Originally Posted by Scrutinizer
Hi, perhaps this
Code:
awk -F'[ \t-]*' '{print $2, $3}'

is the filter you are looking for..]
This returns about the same amount of lines as I would expect from my output however all the lines are blank. What does the [\t-]* actually do? I have tried searching the man pages but cannot see this.

---------- Post updated at 22:32 ---------- Previous update was at 22:27 ----------

Quote:
I think it may be easier to just use shell, like so for instance:
Code:
symcfg -sid 1474 -fa all list | {
read;read;read;read                                   # cut out the first 4 lines of the output
while IFS='[ \t-]' read x director port x; do
  echo "symmaskdb -sid 1474 -dir $director -p $port list database -nop"
done
}

This returns an error message "read: missing argument" I assumed the read like your comments like you said were just to not read the first few lines (which is useful to know by the way).

Apologies for being a bit dense. Its at times like these I realise how little I know about UNIX and scripting.

Thanks for your help and suggestions though
# 4  
Old 06-21-2010
Hi, what happens if you replace that line with:
Code:
read x;read x;read x;read x                           # cut out the first 4 lines of the output

What is you OS?

About awk:
-F'[ \t-]* changes the field separator to any space, tab or - character and makes awk consider repetions of the characters as a single separator
# 5  
Old 06-21-2010
Okay okay - slightly further this time:

Code:
opsan00@dyeccs01 # symcfg -sid 1474 -fa all list | {
opsan00@dyeccs01 > read x;read x;read x;read x
opsan00@dyeccs01 > while IFS='[ \t-]' read x director port x; do
opsan00@dyeccs01 > echo "symmaskdb -sid 1474 -dir $director -p $port list database -nop"
opsan00@dyeccs01 > done
opsan00@dyeccs01 > }
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
symmaskdb -sid 1474 -dir -p list database -nop
#
#

I think I the curcial bit of the script is the bit I least understand:
Code:
while IFS='[ \t-]' read x director port x

I assume that the director and port are parameters and hence why they are passed into the echo command - correct?
However how does it know what these parameters are without awk column 1 & 2?

I am probably getting this wrong but I think if I can get my head round this then I will be able to understand what the script is doing and may even be able to troubleshoot it better myself Smilie

I also thought I understood your awk parameters and tried to change it slightly which made it output the whole command - I will need to see if there is a way I can figure out how to do this - the more I use awk the more l like it.

Code:
# symcfg -sid 1474 -fa all list | awk -F'[ \tFA-]*' '{print $1}'
Symmetrix ID: 000284701474
           S Y M M E T R I X    F I B R E   D I R E C T O R S
    Dir    Port  WWN               VCM      Volume Set   Pnt to Pnt
                                   Enabled  Addressing
    FA-3A   0    500604843e0cc882  No       No           Yes
    FA-3A   1    500604843e0cc8a2  Yes      Yes          Yes
    FA-4A   0    500604843e0cc883  Yes      No           Yes
    FA-4A   1    500604843e0cc8a3  Yes      Yes          Yes
    FA-6A   0    500604843e0cc885  No       No           Yes
    FA-6A   1    500604843e0cc8a5  Yes      No           Yes
    FA-11A  0    500604843e0cc88a  Yes      No           Yes
    FA-11A  1    500604843e0cc8aa  Yes      Yes          Yes
    FA-13A  0    500604843e0cc88c  No       No           Yes
    FA-13A  1    500604843e0cc8ac  Yes      No           Yes
    FA-14A  0    500604843e0cc88d  Yes      No           Yes
    FA-14A  1    500604843e0cc8ad  Yes      No           Yes
    FA-3B   0    500604843e0cc892  Yes      No           Yes
    FA-3B   1    500604843e0cc8b2  Yes      No           Yes
    FA-4B   0    500604843e0cc893  No       No           Yes
    FA-4B   1    500604843e0cc8b3  Yes      No           Yes
    FA-6B   0    500604843e0cc895  Yes      No           Yes
    FA-6B   1    500604843e0cc8b5  Yes      Yes          Yes
    FA-11B  0    500604843e0cc89a  No       No           Yes
    FA-11B  1    500604843e0cc8ba  Yes      No           Yes
    FA-13B  0    500604843e0cc89c  Yes      No           Yes
    FA-13B  1    500604843e0cc8bc  Yes      Yes          Yes
    FA-14B  0    500604843e0cc89d  No       No           Yes
    FA-14B  1    500604843e0cc8bd  Yes      Yes          Yes
#

Thanks again
# 6  
Old 06-22-2010
Hi, could you try if it makes a difference if you replace that line with this?
Code:
while IFS="-$IFS" read x director port x; do

Otherwise, what is your OS?
Can you post the output of this command?
Code:
symcfg -sid 1474 -fa all list | awk 'NR==5' | od -c

# 7  
Old 06-22-2010
Scrutinizer

First things first:

O/S is:
Code:
# uname -a
SunOS 5.8 Generic_117000-05 sun4u sparc SUNW,Sun-Fire-V240
#

This command worked better this time and is passing the right parameters into command which is great - however it is not quite working when I use it properly:

Code:
# symcfg -sid 1474 -fa all list | {
> read x;read x;read x;read x
> while IFS="-$IFS" read x director port x; do
> echo "symmaskdb -sid 1474 -dir $director -p $port list database -nop"
> done
> }
symmaskdb -sid 1474 -dir  -p  list database -nop
symmaskdb -sid 1474 -dir Port -p WWN list database -nop
symmaskdb -sid 1474 -dir Addressing -p  list database -nop
symmaskdb -sid 1474 -dir  -p  list database -nop
symmaskdb -sid 1474 -dir 3A -p 0 list database -nop
symmaskdb -sid 1474 -dir 3A -p 1 list database -nop
symmaskdb -sid 1474 -dir 4A -p 0 list database -nop
symmaskdb -sid 1474 -dir 4A -p 1 list database -nop
symmaskdb -sid 1474 -dir 6A -p 0 list database -nop
symmaskdb -sid 1474 -dir 6A -p 1 list database -nop
symmaskdb -sid 1474 -dir 11A -p 0 list database -nop
symmaskdb -sid 1474 -dir 11A -p 1 list database -nop
symmaskdb -sid 1474 -dir 13A -p 0 list database -nop
symmaskdb -sid 1474 -dir 13A -p 1 list database -nop
symmaskdb -sid 1474 -dir 14A -p 0 list database -nop
symmaskdb -sid 1474 -dir 14A -p 1 list database -nop
symmaskdb -sid 1474 -dir 3B -p 0 list database -nop
symmaskdb -sid 1474 -dir 3B -p 1 list database -nop
symmaskdb -sid 1474 -dir 4B -p 0 list database -nop
symmaskdb -sid 1474 -dir 4B -p 1 list database -nop
symmaskdb -sid 1474 -dir 6B -p 0 list database -nop
symmaskdb -sid 1474 -dir 6B -p 1 list database -nop
symmaskdb -sid 1474 -dir 11B -p 0 list database -nop
symmaskdb -sid 1474 -dir 11B -p 1 list database -nop
symmaskdb -sid 1474 -dir 13B -p 0 list database -nop
symmaskdb -sid 1474 -dir 13B -p 1 list database -nop
symmaskdb -sid 1474 -dir 14B -p 0 list database -nop
symmaskdb -sid 1474 -dir 14B -p 1 list database -nop
symmaskdb -sid 1474 -dir  -p  list database -nop
#
# symcfg -sid 1474 -fa all list | {
> read x;read x;read x;read x
> while IFS="-$IFS" read x director port x; do
> echo "symmaskdb -sid 1474 -dir $director -p $port list database"
> symmaskdb -sid 1474 -dir $director -p $port list database | awk '{print $3}' >>1474_FA_DB_output
> done
> }
symmaskdb -sid 1474 -dir  -p  list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir Port -p WWN list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir Addressing -p  list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir  -p  list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 3A -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 3A -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 4A -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 4A -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 6A -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 6A -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 11A -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 11A -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 13A -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 13A -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 14A -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 14A -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 3B -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 3B -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 4B -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 4B -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 6B -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 6B -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 11B -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 11B -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 13B -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 13B -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 14B -p 0 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir 14B -p 1 list database
'sid': Invalid action.
symmaskdb -sid 1474 -dir  -p  list database
'sid': Invalid action.
#

However if I issue command on its own it works:

Code:
# symmaskdb -sid 1474 -dir 4A -p 1 list database
Symmetrix ID            : 000284701474
Database Type           : Type2
Last updated at         : 04:14:48 AM on Thu Jun 10,2010
Director Identification : FA-4A
Director Port           : 1
                               User-generated
Identifier        Type   Node Name        Port Name         Devices
----------------  -----  ---------------------------------  ---------
50060b00000abb5e  Fibre  50060b00000abb5e 50060b00000abb5e  0386:0387
                                                            05A0:0621
50060b00000abf38  Fibre  50060b00000abf38 50060b00000abf38  0388:0389
                                                            05A0:0621
50060b00002589e2  Fibre  50060b00002589e2 50060b00002589e2  0380
                                                            06AA:06DA
50060b00001d8c36  Fibre  50060b00001d8c36 50060b00001d8c36  0381
                                                            06AA:06DA
50060b00002589ec  Fibre  50060b00002589ec 50060b00002589ec  039F
                                                            06AA:06DA
50060b00000ac882  Fibre  50060b00000ac882 50060b00000ac882  038A:038B
                                                            05A0:0621

I cannot tell you how much this is going to help me with many different commands. can you break down the command for me so I can understand how this works - once I understand I can then use for many other different queries and troubleshooting.

As for the other command it did not really return anything - but here is the output:

Code:
# symcfg -sid 1474 -fa all list | awk 'NR==5' | od -c
0000000  \n
0000001
#

Again thanks for your help.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Simple if script

Hi, new to unix and scripting, and i'm trying to set up a simple "if" script to create a seperate flag file dependant on success. So far i have the following ($5 is a variable passed to the script from the backup job) if then touch /u03/backups/backup_ended.flag else touch... (13 Replies)
Discussion started by: richs24
13 Replies

2. Linux

How to execute a simple select script using a shell script?

Hi team, I have two select statements and need to run them using SYSDBA user select * from temp_temp_seg_usage; select segment_name, tablespace_name, bytes/ (1024*1024) UsedMb from dba_segments where segment_name='TEMP_TEMP_SEG_USAGE'; Need to run this using a shell script say named... (1 Reply)
Discussion started by: pamsy78
1 Replies

3. Shell Programming and Scripting

Help making simple perl or bash script to create a simple matrix

Hello all! This is my first post and I'm very new to programming. I would like help creating a simple perl or bash script that I will be using in my work as a junior bioinformatician. Essentially, I would like to take a tab-delimted or .csv text with 3 columns and write them to a "3D" matrix: ... (16 Replies)
Discussion started by: torchij
16 Replies

4. Shell Programming and Scripting

Simple Script Can u help please?

I have a file that contains these lines User ID Username -------- ---------- 7738626,zrazak 7783535,jvincigu 7805567,ldrennan 7805583,mtsakama I need to sort the names alphabetically How can I sort the lines based on the user names ? I would appreciate a quick reply anyone ... (1 Reply)
Discussion started by: mnassiri
1 Replies

5. Shell Programming and Scripting

Simple Script to do so?

hi guys, i am a noob to shell scripting, and i would like to run a simple script, that could simply do the following: 1. SFTP to a remote server/path...and download the newest *.gz backup file on that server. (there are many *.gz files in that folder, i simply need the latest one) 2. locally... (1 Reply)
Discussion started by: Confidence
1 Replies

6. Shell Programming and Scripting

Simple script

I have a script that will check for integer line by line and if it encounter any blank space will echo it: Below the script: #!/bin/ksh while read i do echo "Value is $i" count=`expr substr "$i" 1 3` echo $count if && then echo "Matched" else echo "Blank Space Found" fi (3 Replies)
Discussion started by: ali560045
3 Replies

7. UNIX for Dummies Questions & Answers

Simple script

I am trying to print my script arguments, but i am stuck at the arrow pointed lines..please help #!/bin/bash echo "Number of arguments $#" count=1 while do echo ${$count} <======================== count = $(expr $count +1) <================== done (4 Replies)
Discussion started by: chvs2000
4 Replies

8. Shell Programming and Scripting

simple script

Hi, I just need a shell script to find out the processes taking longer time...(Unix/Linux) Urgent response needed.. Rajiv (5 Replies)
Discussion started by: rajivn786
5 Replies

9. Shell Programming and Scripting

Simple Script

Here is the script that i am trying to run. I get an error and i can't figure out what is the problem. #!/bin/bash echo "What is your name" read NAME if ; then echo "My name is the same" esle echo "You have a nice name" fi (11 Replies)
Discussion started by: xplod4202
11 Replies

10. UNIX for Dummies Questions & Answers

help with simple script

I need a script that checks to see if ypserv is running, and if not it will restart yp. I have a ypslave that is running Sol9, and the ypsrv daemon is dieing, I want to create a cron job that periodicly checks to see if it's running, and if it see's that it isn't, it will re-start the daemon (1 Reply)
Discussion started by: jdel80
1 Replies
Login or Register to Ask a Question