UNIX Shell Scripting (Solaris) for File Checking


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting UNIX Shell Scripting (Solaris) for File Checking
# 43  
Old 06-08-2016
Hi don,

i followed all your suggestions and instrcutions and i work perfectly as i want.. THANK YOU VERY VERY MUCH for all the help.

i got the output that i wanted and thank you thank you honestly thank you so much for all the help..

ALSO BIG THANKS TO:
RudiC
MadeInGermany
RavinderSingh13 (R.Singh)
jlliagre

for all there contributions.. THANK YOU ALL GUYS.

(note: please dont close this thread yet so that we can come back on this thread any time..)

thank you all!!!! thank you guys so much.>! thank you sir don cragun! Thank you..! Smilie Smilie Smilie
# 44  
Old 06-09-2016
Hi guys../don,

im back and i need again your help. .sorry.. Smilie

Code:
#!/bin/ksh
config='/home/abainzd/dave.conf'
log='/home/abainzd/logfile.txt'

while read dir pattern
do	bad_found=0
	cd "$dir" && for file in *
	do	if [ -f "$file" ] && ! /usr/xpg4/bin/grep -Fq "$pattern" "$file"
		then	printf 'Invalid file "%s" in "%s"\n' "$file" "$dir"
			bad_found=1
		fi
	done
	if [ $bad_found -eq 0 ]
	then	printf 'There are no invalid files in "%s"\n' "$dir"
	fi
done < "$config" > "$log"

thank you for your code but my boss wants modifacations so i edited it so that the only ouput it will log is

Code:
Invalid file "dave2.txt" in "/files05/home/chgtpst/MXS/inb/CHTR/FTR/9"

i mean the only output it will log in the logfile.txt is the invalid files and its directories. so it looks like this

Code:
#!/bin/ksh
config='/home/abainzd/dave.conf'
log='/home/abainzd/logfile.txt'

while read dir pattern
do      bad_found=0
        cd "$dir" && for file in *
        do      if [ -f "$file" ] && ! /usr/xpg4/bin/grep -Fq "$pattern" "$file"
                then    printf 'Invalid file "%s" in "%s"\n' "$file" "$dir"
                        bad_found=1
                fi
        done
done < "$config" > "$log"

and it perfectly works..

and another modification is they dont want the script to create a logfile.txt, they want it to append a logfile which is

Code:
/ats/1.0.0/pst/release/logs/events.log

in the format of
Code:
12/24/2015_17:52:17|ALERT2|ATS|chk_dirs.pl@mhapdwmap005:

i mean like this

Code:
*DATE*_*TIME|ALERT2|ATS|chk_dirs.pl@mhapdwmap005: Invalid files "dave.txt" in this *directory*

the date and time is my probelam beacuse
Code:
|ALERT2|ATS|chk_dirs.pl@mhapdwmap005:

is a standard/default phrase of ours..

pleease help me once again.. thanks.

Last edited by RudiC; 06-09-2016 at 07:17 AM.. Reason: corrected invalid code tag.
# 45  
Old 06-09-2016
Going back and removing significant portions of your earlier posts (that provided information on which responses to those posts were based is VERY BAD FORM! Do Not Do That! People who read this (horrendously long) thread in the future need to be able to see the entire discussion, not a discussion with major chunks of the text removed! (If this isn't acceptable to you, we can remove the thread and ban you from this site.)

We are not your unpaid programming staff. If your boss wants me to rewrite code I have supplied as a method to help you learn how to write code, have your boss send me a private message telling me what changes he or she wants me to make and how much he will pay me to do it. Do not keep changing your requirements and expect us to keep changing code we have suggested to meet new requirements the unnamed "they" want. Do not tell us our code is wrong because we did not supply output that meets your output formatting standards when you never mentioned any output formatting standards before.

I told you exactly what you need to change in this script to append to a log file instead of replace it in an earlier message in this thread. Do I really have to tell you how to do that again? Can't you reread this thread instead of asking us to repeat ourselves?

Are you really unable to figure out how to change your script to use a different pathname for the output log file used by your script? Please try to do this on your own, and show us what you have done if it doesn't work when you try it.

I would not think you would have trouble modifying the printf command in the script I suggested to get your standard output format, although we might be willing to help you add the date and timestamp. I have absolutely no idea why your standard would call for timestamps approximately five and a half months old. If you expect us to help you add seemingly random old timestamps to log entries you are creating, you need to give us exact specifications on what date and time are to be used. Are the dates and timestamps somehow related to one of the timestamps on the invalid files? If these are intended to be current timestamps and you just provided a confusing example, please try using the date utility to capture the data you want to include your log entries instead of just asking us to do it for you. If you show us that you have made an effort to make these changes on your own, but need a little help; we will be happy to help you. If you don't show us that you are willing to try to learn how to do this on your own, we are wasting our time here.
# 46  
Old 06-10-2016
Hi don,

im so sorry for being stupid and stubborn on my posts.. sorry sorry sorry.. i trul am sorry.. and..

i remember what you told me in "appending" and in changing the directories of log so here it is..

Code:
#!/bin/ksh
config='/home/abainzd/dave.conf'
log='/ats/1.0.0/pst/release/logs'

while read dir pattern
do      bad_found=0
        cd "$dir" && for file in *
        do      if [ -f "$file" ] && ! /usr/xpg4/bin/grep -Fq "$pattern" "$file"
                then    printf '|ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid file "%s" in "%s"\n' "$file" "$dir"
                        bad_found=1
                fi
        done
done < "$config" >> "$log"

then it works fine,,

results is:

Code:
|ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid file "dave.txt" in "/files05/home/c
hgtpst/MXS/inb/CHTR/FTR/9"

then i tired to add date_time stamp..

Code:
#!/bin/ksh
config='/home/abainzd/dave.conf'
log='/ats/1.0.0/pst/release/logs/events.log'
now="$(date +'%d/%m/%Y_%X')"

while read dir pattern
do      bad_found=0
        cd "$dir" && for file in *
        do      if [ -f "$file" ] && ! /usr/xpg4/bin/grep -Fq "$pattern" "$file"
                then    printf "$now" '|ALERT2|ATS|chk_dirs.pl@mhappmmap001:Inva
lid file "%s" in "%s"\n' "$file" "$dir"
                        bad_found=1
                fi
        done
done < "$config" >> "$log"

and resulted to:

Code:
09/06/2016_23:12:50

may i ask what is wrong with my addition into the script ? why is that the expected output which is
Code:
09/06/2016_23:12|ALERT2|ATS|chk_dirs.pl
@mhappmmap001:Invalid file "dave.txt" in "/files05/home/chgtpst/MXS/inb/CHTR/FTR
/9"

is not met? thank you and sorry once again.
# 47  
Old 06-10-2016
Hi Dave,
OK. So now we know that you are not stupid (and please do not say that you are again) and, if you try to make some changes on your own, you get most of it right. As I said before, if you make an honest effort to do the work on your own, we are happy to help you with problems if you get stuck. Just don't expect us to do everything for you when you should be able to do most of it on your own.

The only real problem you have left is that you changed the printf command format argument to a fixed string (the date and timestamp) instead of adding another %s argument to the format string and adding the date and timestamp data in the appropriate spot in the argument list.

What happens if you change:
Code:
		then	printf "$now" '|ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid file "%s" in "%s"\n' "$file" "$dir"

to:
Code:
		then	printf '%s|ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid file "%s" in "%s"\n' "$now" "$file" "$dir"

or, to avoid lines in your script getting wider than 80 characters:
Code:
		then	printf '%s|%s file "%s" in "%s"\n' "$now" \
			    'ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid' \
			    "$file" "$dir"

(Note that this assumes that you want one line of output per invalid file instead of the three lines of output shown in post #46.)

And, since you no longer need to keep track of whether or not an invalid file is found in a directory (since you no longer want to print a message if all files in a directory are valid), there is no need to reset the bad_found variable in each directory-processing loop nor to update it when an invalid file is found. So, you might want to see if the slightly simpler:
Code:
#!/bin/ksh
config='/home/abainzd/dave.conf'
log='/ats/1.0.0/pst/release/logs/events.log'
now="$(date +'%d/%m/%Y_%X')"

while read dir pattern
do	cd "$dir" && for file in *
	do	if [ -f "$file" ] && ! /usr/xpg4/bin/grep -Fq "$pattern" "$file"
		then	printf '%s|%s file "%s" in "%s"\n' "$now" \
			    'ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid' \
			    "$file" "$dir"
		 fi
	done
done < "$config" >> "$log"

works for you.

Note, however, that the date and time format string you said was your standard output format in post #44 showed a date in the format MM/DD/YYYY and the output your are producing above is in the format DD/MM/YYYY. I assume you can change the date command format string in your script if you want to switch the order of the month and day numbers in your output.
# 48  
Old 06-13-2016
hi don,

i have used your final code and changed that format of the date,

Code:
#!/bin/ksh
config='/home/abainzd/dave.conf'
log='/ats/1.0.0/pst/release/logs/events.log'
now="$(date +'%m/%d/%Y_%X')"

while read dir pattern
do	cd "$dir" && for file in *
	do	if [ -f "$file" ] && ! /usr/xpg4/bin/grep -Fq "$pattern" "$file"
		then	printf '%s|%s file "%s" in "%s"\n' "$now" \
			    'ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid' \
			    "$file" "$dir"
		 fi
	done
done < "$config" >> "$log"

and it works perfecly.. result is..

Code:
06/12/2016_22:55:53|ALERT2|ATS|chk_dirs.pl@mhappmmap001:Invalid file "dave.txt"
in "/files05/home/chgtpst/MXS/inb/CHTR/FTR/9"

thank you so much once again for the perfect results.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

Solaris Shell Scripting

Hi, Want to know, is there any way to restrict a Solaris user to Single Login. Means a particular user can login once and if he or someone else tries to login with his ID then a message displayed "user already logged in" and denies his attempt. Regard, Jeet (1 Reply)
Discussion started by: CountJeet
1 Replies

2. Shell Programming and Scripting

Read csv file, convert the data and make one text file in UNIX shell scripting

I have input data looks like this which is a part of a csv file 7,1265,76548,"0102:04" 8,1266,76545,"0112:04" I need to make the output data should look like this and the output data will be part of text file: 7|1265000 |7654899 |A| 8|12660000 |76545999 |B| The logic behind the... (6 Replies)
Discussion started by: RJG
6 Replies

3. Shell Programming and Scripting

How to add trailer record at the end of the flat file in the unix ksh shell scripting?

Hi, How to add trailer record at the end of the flat file in the unix ksh shell scripting can you please let me know the procedure Regards Srikanth (3 Replies)
Discussion started by: srikanth_sagi
3 Replies

4. Shell Programming and Scripting

Request for file read option in Unix shell scripting

Hi Friends, I would like to read all the record from one txt file to other file txt For example I have two txt file a.txt and b.txt. I need to read a.txt record by record and I need add the system date @ end of each record before moving it to b.txt. Could you please share the coding for... (4 Replies)
Discussion started by: vinoth124
4 Replies

5. Shell Programming and Scripting

generate tabular output from an input text file in unix shell scripting

Hi, I have the output (as below) which i want it to be in a table. For e.g. space utilization in PSE on path /logs is 0% space utilization in PSE on path /logs/tuxedo/tuxlsp is 16% space utilization in PSE on path /ldvarlsp/lsp/log is 37% space utilization in PSE on path /home is 6%... (7 Replies)
Discussion started by: pkbond
7 Replies

6. Shell Programming and Scripting

C Shell Scripting - HELP! - checking total args in a script

Hi, I 'm trying to learn the scripting language and am trying to create a script to open a C Program, allow the user to edit it, and then run it. What I have works but only when you enter the name to be compiled and the c program, but what if you only entered the 1 argument (cprogram.c) ? but I 'm... (3 Replies)
Discussion started by: patel_ankz
3 Replies

7. UNIX for Dummies Questions & Answers

Unix Shell Scripting -- update employees not present in input file

ALL, My shell script takes a employee file as input. I have to identify the list of employees not in the input file and update their status in the database. Approach I followed: by traversing through the input file add all the emplid's to a variable. update the status of employees not in... (2 Replies)
Discussion started by: sailussr
2 Replies

8. Solaris

How to check the file existence using shell scripting in Solaris-10

Hi, I have a script which will check the fiel existence, the lines are as below if !(test -d ./data) then mkdir data fi In the first line error occurs as below generatelicense.sh: syntax error at line 2: `!' unexpected Where as this script works fine in linux OS. How to solve... (2 Replies)
Discussion started by: krevathi1912
2 Replies

9. AIX

Unix shell scripting to find latest file having timestamp embedded...

Hi guys, I have a directory in UNIX having files with the below format, i need to pickup the latest file having recent timestamp embedded on it, then need to rename it to a standard file name. Below is the file format: filename_yyyymmdd.csv, i need to pick the latest and move it with the... (2 Replies)
Discussion started by: kaushik25
2 Replies

10. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies
Login or Register to Ask a Question