awk Script aus jedem Verzeichnis ausführen

T

TobyTobsen

Grünschnabel
Hi Leute,

und zwar habe ich diesmal folgendes Problem.
Ich habe ein ksh Script mit dem Namen "menu_main" geschrieben, dass wiederrum verschiedene awk-Skripte aufruft. Hier ein kurzer Auszug:

Code:
if [[  -d $FOLDER/dump/ && -d $FOLDER/opt/ && -d $FOLDER/var/ ]]
	then		
		echo "\033[1;32mCorrect folder\033[m"
		paste $FOLDER/opt/hsc/data/version $FOLDER/root/.version  $FOLDER/tmp/pesupport/network_cfg/lshmc_v >ergebnis
awk -f ausgabe ergebnis



Jetzt habe ich den Pfad zu dem Skript "menu_main" so in profiles eingetragen, dass ich es aus jedem Ordner heraus ohne die Pfadangabe starten kann.
Allerdings sind meine awk Skripte mit nicht mehr ausführbar.

Hat da vielleicht jemand eine Idee.
Wäre echt super, wenn ihr mit weiterhelfen könnt.
Schon einmal vielen Dank im Voraus

Gruß
Tobi
 
Zuletzt bearbeitet:
Code:
ln -s /verzeichnis/zum/scrip /usr/bin/scriptname

Erstellt im bin einen Link zu deinem Scrip, nun kannst du ueberall dein skript mit den gelinkten Namen aufrufen.
 
Zuletzt bearbeitet:
Hi Akendo,
vielen Dank für deine schnelle Antwort. Ich habe das jetzt ausprobiert.
Das Skript liegt einfach im Verzeichnis Final.

Das Kommando habe ich entsprechend deiner Syntax eingegeben:

Code:
ls -s /Final /usr/bin/ausgabe

Da kommt aber folgende Fehlermeldung

Code:
ls: 0653-341 The file /usr/bin/ausgabe does not exist.
/Final:
total 292                       4 hostname
   0 Hauptmenü                 12 int_analyse
   4 analyse2                   8 interface3.txt
   4 ausgabe                    4 ksh
   4 ausgabe2                   4 logserver.log.old_gzip
   4 ausgabe3                   4 lssys2
   4 ausgabe4                   4 lssys3


Was habe ich da falsch gemacht. Zur Infor ich arbeite auf dem AIX 6.1 System, vielleicht liegt es ja daran.

Danke dir schon einmal im Voraus

Gruß
Tovi
 
Es muss ln heissen :-)
 
Zuletzt bearbeitet:
:)) Muss wohl noch ziemlich früh für mich sein ..... ln und ls klar ok

Habe das ganze jetzt korrekt eingegeben

Code:
ln -s /Final /usr/bin/ausgabe

das ist auch fehlerlos angenommen worden. Allerdings bringt der Aufruf aus einem anderen Verzeichnis, in dem die Datei "ergebnis" liegt, die mittels des Skripts "ausgabe" bearbeitet werden soll folgende Ausgabe.

Code:
awk -f ausgabe ergebnis
awk: 0602-546 Cannot find or open file ausgabe.

Also nicht wirklich eine Verbesserung.

Was mach ich denn da falsch, liegt das an dem awk -f dass er das nicht findet ?
 
Das ist ja leider nur ein Auszug aus deinem Script.
Koenntest du mir das mal ganz hochladen? Ansonsten versucht doch an der Fehlerstelle anzusetzen, wo awk einen Fehler ausgibt.
 
dankr dir nochmals für deine schnellen Antworten :)).
Ds awk Skript funktioniert ja mit der Pfadangabe vorneweg einwandfrei.
Sprich:
Code:
awk -f /Final/ausgabe ergebnis
.

Ich schick dir jetzt mal den gesamten Code, vielleicht hilft das ja weiter.
In der Funktion Systeminformation interessiert mich nur die erste if Abfrage. Überall wo eine Ausgabe in die Datei Generalprobe/ergebnis umgeleitet wird.... ist noch nicht interessant

Code:
# function DataCheck()
## prints the availability of files used in this program on the screen
DataCheck()
{
echo""
if [[ ! -a $FOLDER/dump/rmc/lspartition.out  ]] #pfad anpassen
	then
		echo "\033[1;31mFile: lspartition.out does not exist\033[m"
		
		if  [[ ! -a $FOLDER/dump/rmc/_ctsupt_/ctsnap.*.*.tar.gz ]]
			then
				echo "\033[1;31mFile: snapExtract.tar.gz does not exist\033[m"

			if  [[ ! -a $FOLDER/tmp/sysinfo.log ]]
				then
					echo "\033[1;31mFile: sysinfo.log does not exist\033[m"

				if  [[ ! -a $FOLDER/tmp/pesupport/network_cfg/arpa ]]
					then
						echo "\033[1;31mFile: arpa does not exist\033[m"
		
					if  [[ ! -a $FOLDER/tmp/pesupport/network_cfg/messages ]]
						then
							echo "\033[1;31mFile: message does not exist\033[m"	
		
						if  [[ ! -a $FOLDER/tmp/pesupport/network_cfg/lshmcn ]]
							then
								echo "\033[1;31mFile: lshmnc does not exist\033[m"	

							if  [[ ! -a $FOLDER/tmp/pesupport/network_cfg/lssyscfgsys ]]
								then
									echo "\033[1;31mFile: lssyscfgsys does not exist\033[m"	

								if  [[ ! -a $FOLDER/tmp/pesupport/network_cfg/ifc* ]]
									then
										echo "\033[1;31mFile: ifcgeth does not exist\033[m"	

									if  [[ ! -a $FOLDER/var/hsc/log/hdwr_svr.log.old.* ]]
										then
											echo "\033[1;31mFile: hdwr_svr.log.old does not exist\033[m"	

										if  [[ ! -a $FOLDER/var/hsc/log/cimserver.log ]]
											then
												echo "\033[1;31mFile: cimserver.log does not exist\033[m"	

											if  [[ ! -a $FOLDER/var/hsc/log/cimLogs/cimserver.log.*.gz ]]
												then
													echo "\033[1;31mFile: cimserver.log.*.gz does not exist\033[m"	

												if  [[ ! -a $FOLDER/var/log/messages-*.gz ]]
													then
														echo "\033[1;31mFile: messages-*.gz does not exist\033[m"	

													if  [[ ! -a $FOLDER/var/hsc/log/hmclogger.log ]]
														then
															echo "\033[1;31mFile: hmclogger.log does not exist\033[m"
													
													fi
												fi
											fi
										fi
									fi
								fi
							fi
						fi
					fi
				fi
			fi
		fi
 else
	echo "\033[1;32mNo data needed for the analysis is missing\033[m"
fi
echo "**************************************************************************"
}

SystemInformation()
{
echo "**************************************************************************"
if [[  -d $FOLDER/dump/ && -d $FOLDER/opt/ && -d $FOLDER/var/ ]]
	then		
		echo "\033[1;32mCorrect folder\033[m"
		paste $FOLDER/opt/hsc/data/version $FOLDER/root/.version  $FOLDER/tmp/pesupport/network_cfg/lshmc_v >ergebnis
		if [[  $? -ne 0 ]]
		then
			paste $FOLDER/root/.version  $FOLDER/tmp/pesupport/network_cfg/lshmc_v >/Generalprobe/ergebnis
			if [[  $? -ne 0 ]]
			then
				paste $FOLDER/opt/hsc/data/version $FOLDER/root/.version >/Generalprobe/ergebnis
				if [[  $? -ne 0 ]]
				then
					paste $FOLDER/opt/hsc/data/version $FOLDER/tmp/pesupport/network_cfg/lshmc_v >/Generalprobe/ergebnis
					if [[  $? -ne 0 ]]
					then 
						paste $FOLDER/tmp/pesupport/network_cfg/lshmc_v >/Generalprobe/ergebnis
						if [[  $? -ne 0 ]]
						then
							paste $FOLDER/opt/hsc/data/version >/Generalprobe/ergebnis
							if [[  $? -ne 0 ]]
							then
								paste $FOLDER/root/.version >/Generalprobe/ergebnis
									if [[  $? -ne 0 ]]
									then
										echo "Es sind keine Dateien vorhanden"
										exit
										fi
								awk -f ausgabe7 ergebnis
								exit
								fi
							awk -f ausgabe6 ergebnis
							exit
							fi
						awk -f ausgabe5 ergebnis
						exit
						fi					
					awk -f ausgabe4 ergebnis					
					exit
					fi
				awk -f ausgabe3 ergebnis
				exit
				fi
			awk -f ausgabe2 ergebnis
			exit
			fi
	awk -f ausgabe $FOLDER/ergebnis
	else		
		echo "\033[1;31mWrong folder\033[m"
		
	fi
}

#function folderInfo
##prints the current folder 
folderInfo()
{
if [[ -d $FOLDER/dump/ && -d $FOLDER/opt/ && -d $FOLDER/var/ ]]
	then
			OUTPUT=1
else 
	OUTPUT=0
fi
}


################################################################
##### MAIN
################################################################
#Variablen Definition
SILENT=0
PROGRAM="\033[1;34mAnalyse Blue\033[m"
FOLDER=$(pwd)
echo $FOLDER
USAGE=1
OUTPUT=0
HOMEDIR=$(pwd)
echo $HOMEDIR


# process parameter and set the variables accordingly
while getopts shu o
do	case "$o" in
	# silent mode
	s) 	SILENT=1;;
	h)	usage
		exit 0;;
	u) USAGE=0;;
	# unknown parameter
	[?])	usage
		exit 1;;
	esac
done

if [[ SILENT -eq 0 ]]
then
	header
fi

if [[ USAGE -eq 1 ]]
then
	usage
fi



# shift the processed parameters out of the scope
shift $(($OPTIND -1))



# change the directory
case $# in
	# 0 -> error and exit
	0)	echo ""
		folderInfo
		if [[ $OUTPUT -eq 1 ]]
			then
				echo ""
				echo "\033[1;32mCurrent debug dir: "$FOLDER"\033[m"
			else
				echo ""
				echo "\033[1;31mNo User dir is selected (--> Usage)\033[m"
		fi;;
	# 1 -> assign corresponding variable
	1)	FOLDER=$1
		folderInfo
		if [[ $OUTPUT -eq 1 ]]
			then 
				echo ""
				echo "\033[1;32mCurrent debug dir: "$FOLDER"\033[m"
		elif [[ $OUTPUT -ne 1 ]]
			then 
				echo ""
				echo "\033[1;31mNo dir selected (--> Usage)\033[m"
		fi;;
	# other value -> error and exit
	*)	echo "ERROR: WRONG PARAMETERS"
		usage
		exit 3;;
esac



run=99
################################################################
##### Now the real Part starts
################################################################
while [[ run -eq 99 ]]
do

#if [[ $FOLDER != $(pwd) ]]
folderInfo
if [[ $OUTPUT -eq 1 ]]
	then
		echo ""
		SystemInformation
		DataCheck
		echo ""
elif [[ $FOLDER == $(pwd) ]]
	then
		FOLDER=""		
fi
echo ""
echo " -------------------------------------------------"
echo "|Which Operation do you want to execute?(1-6)     |"	
echo " -------------------------------------------------"
echo "1. Extract Dump/ctsnap"
echo "2. User driven data analysis"
echo "3. automatic analysis"
echo "4. modular analysis"
echo "5. Select the Path to an extracted Archive"
echo " -------------------------------------------------"
echo "6. Quit program"

printf "\n"
read eingabe?"Select number now: " 
case $eingabe in
	1) 	#$HOMEDIR/main_extract $FOLDER
		main_extract $FOLDER
		exit;;	 
    2)	int_analyse $FOLDER
		#$HOMEDIR/int_analyse $FOLDER
		if [[ $? -eq 11 ]]
		then
			run=11
		fi;;
	3)	$HOMEDIR/automatic_analysis $FOLDER;;
	4) $HOMEDIR/interface3.txt $FOLDER;;	
	5)  userDir;;
	6)  echo ""
		read end?"Do you really want to quit the program [y/n]?"
		if [[ $end == 'y' ]]
		then
			exit
		elif [[ $end == 'n' ]]
			then
				run=99
				#/Generalprobe/menu_main
		else 
			echo "Wrong Parameter"
			#/Generalprobe/menu_main
		fi;;			
	*) echo "Wrong Parameter"
		exit;;
	
esac
done


Alle Skripte liegen im Ordner Final
Aufgerufen wird es aus dem Ordner tmp/090319.1631
 
Zuletzt bearbeitet:
ich werfe mal chmod, she-bang und $PATH als Stichworte in die Runde.
 
Hi das hat geklappt einfach in das awk Script vorne #!/bin/awk -f einfügen
und dann aus dem ksh skript ohne das awk -f kommando vorneweg aufrufen

sprich "ausgabe ergebnis"

danke euch vielmals
 

Ähnliche Themen

NagiosGrapher 1.7.1 funktioniert nicht

Backup Skript automatisch ausführen mit udev

Amavis & Benachrichtigungen

Server-Monitoring mit RRDTool

Zurück
Oben