Sponsored Content
Top Forums Shell Programming and Scripting How to identify the calling script? Post 302171388 by crematoriumm on Thursday 28th of February 2008 10:53:24 AM
Old 02-28-2008
Quote:
Originally Posted by vino
Interesting.

Couple of ways.

1. Why dont you embed k2.sh in k1.sh ? After all k2 serves k1 alone.

2. Just before you call k2.sh, export a unique variable from k1.sh. When you start k2.sh, check for that new export. If not there, then act accordingly.

3. Use the features from ps. You can list the ps output in a tree format. From k2.sh get your own pid and your parents pid ($PPID), traverse up the list 1 step to get your parent's PID and CMD. Compare that CMD with the complete path of k1.sh or compare just the pid value. If it matches, proceed. This works well if the path to k1.sh remains the same throughout.

There may be other ways as well... nothing strikes me now.

But none of these solutions stand (except for sol1) if someone writes their own k1.sh.
Vino,

I can't use the solutions 1 and 2 for security reasons, but the third solution sounds to be great.

I did this:

The code:

#!/bin/ksh
var1=`echo $$`
echo "k2.sh pid => " $var1 ## Just for checking. Will be erased...
echo "Listing processes with the k2.sh pid" ## Just for checking. Will be erased...
ps -ef | grep $var1 ## Just for checking. Will be erased...
v=`ps -ef | grep $var1 | sort +1 -2 | cut -d" " -f4 | head -1`
echo "k2.sh parent process => "$v ## Just for checking. Will be erased...
echo "Listing processes with the k2.sh parent process" ## Just for checking. Will be erased...
ps -ef | grep $v ## Just for checking. Will be erased...
echo "The parent process..." ## Just for checking. Will be erased...
ps -ef | grep $v | sort | head -1 | cut -d" " -f13

The result:

server01:/var/tmp$ /var/tmp/k1.sh
k2.sh pid => 29483
Listing processes with the k2.sh pid
user01 29484 29483 1 12:43:59 pts/38 0:00 ps -ef
user01 29483 29482 0 12:43:59 pts/38 0:00 /bin/ksh /var/tmp/k2.sh
k2.sh parent process => 29482
Listing processes with the k2.sh parent process
user01 29482 28411 0 12:43:59 pts/38 0:00 /bin/ksh /var/tmp/k1.sh
user01 29483 29482 0 12:43:59 pts/38 0:00 /bin/ksh /var/tmp/k2.sh
The parent process...
/var/tmp/k1.sh

Can you see any security hole in it?

Thanks a lot for your help!!

Cremm.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

test script to identify SHELL

I am new to BASH and writing a small script to identify the SHELL . #!/bin/bash BASH='/bin/bash' KSH='/bin/ksh' if then echo "it's Bash" else echo "it's not Bash" fi $ bash -x a.sh + BASH=/bin/bash + KSH=/bin/ksh + '' a.sh: line 4: where am I missing . PLease advice . (10 Replies)
Discussion started by: talashil
10 Replies

2. Shell Programming and Scripting

Identify script please!

Have a script that I'm trying to adapt for something else, but I do not understand the following lines. Can anyone help? I know what expr does, `expr 8 + 2`, but: FILENAME=`expr //$FILE : '.*/\(.*\)'` UNPACKDIR=`echo $FILE | sed -e s/$FILENAME//g` Thanks (6 Replies)
Discussion started by: bound4h
6 Replies

3. Shell Programming and Scripting

Using an awk script to identify dupes in two files

Hello, I have two files. File1 or the master file contains two columns separated by a delimiter: a=b b=d e=f g=h File 2 which is the file to be processed has only a single column a h c b What I need is an awk script to identify unique names from file 2 which are not found in the... (6 Replies)
Discussion started by: gimley
6 Replies

4. Shell Programming and Scripting

Syntax error calling TCL script from shell script

hello everyone i am beginner on shell scripting .and i am working on my project work on ad hoc network i wrote a batch (.sh) to do a looping and execute a tcl script i wrote before in each iteration ..but i got this problem " syntax error near unexpected token `('... (1 Reply)
Discussion started by: marcoss90
1 Replies

5. Shell Programming and Scripting

Script to Identify if folder has a file in it

Hi everyone I am new to the forums. I haven't done much linux myself but I have been asked if I can do the following. Write a linux script that needs to scan a certain folder every x amount of minutes and if there is a file in the folder then it needs to call a different script. Is this... (2 Replies)
Discussion started by: Bosbaba
2 Replies

6. Shell Programming and Scripting

Calling a Perl script in a Bash script -Odd Situation

I am creating a startup script for an application. This application's startup script is in bash. It will also need to call a perl script (which I will not be able to modify) for the application environment prior to calling the application. The problem is that this perl script creates a new shell... (5 Replies)
Discussion started by: leepet01
5 Replies

7. Shell Programming and Scripting

How we can pass the argument when calling shell script from perl script

Can someone let me know how could I achieve this In one of per script I am calling the shell script but I need to so one thing that is one shell script call I need to pass pne argument.In below code I am calling my ftp script but here I want to pass one argument so how could I do this (e.g:... (5 Replies)
Discussion started by: anuragpgtgerman
5 Replies

8. Shell Programming and Scripting

How to identify whether the script is in Unix format or not ?

Hi All, I have the below scenario in my environment Developers used to copy file from windows to Linux box. Some time on the copied file developers miss to run the dos2unix utility. Because of this script gets failed during the execution. Most of the failures are due to the dos2unix format... (7 Replies)
Discussion started by: kalpeer
7 Replies

9. Shell Programming and Scripting

Identify variables used in the shell script

Hi, Is there any simple way to get/identify the variables that are used in a file and print those variable names. If I have something like this in a file, /$var/temp_dir/${var2}${var3}.log I want to display the variables 'var', 'var2' and 'var3' from that file. I tried something like... (6 Replies)
Discussion started by: pvamsikr
6 Replies

10. Shell Programming and Scripting

Unable to identify error in the script

cat test3.sh #!/bin/sh set -x while getopts ":n:" opt; do case "$opt" in n) host=$OPTARG shift 2 ;; -h ) host=$2 shift 2 ;; *) break ;; esac done; echo "host =... (7 Replies)
Discussion started by: Vishal_dba
7 Replies
platform::shell(n)					       Tcl Bundled Packages						platform::shell(n)

__________________________________________________________________________________________________________________________________________________

NAME
platform::shell - System identification support code and utilities SYNOPSIS
package require platform::shell ?1.1.4? platform::shell::generic shell platform::shell::identify shell platform::shell::platform shell _________________________________________________________________ DESCRIPTION
The platform::shell package provides several utility commands useful for the identification of the architecture of a specific Tcl shell. This package allows the identification of the architecture of a specific Tcl shell different from the shell running the package. The only requirement is that the other shell (identified by its path), is actually executable on the current machine. While for most platform this means that the architecture of the interrogated shell is identical to the architecture of the running shell this is not generally true. A counter example are all platforms which have 32 and 64 bit variants and where a 64bit system is able to run 32bit code. For these running and interrogated shell may have different 32/64 bit settings and thus different identifiers. For applications like a code repository it is important to identify the architecture of the shell which will actually run the installed packages, versus the architecture of the shell running the repository software. COMMANDS
platform::shell::identify shell This command does the same identification as platform::identify, for the specified Tcl shell, in contrast to the running shell. platform::shell::generic shell This command does the same identification as platform::generic, for the specified Tcl shell, in contrast to the running shell. platform::shell::platform shell This command returns the contents of tcl_platform(platform) for the specified Tcl shell. KEYWORDS
operating system, cpu architecture, platform, architecture platform::shell 1.1.4 platform::shell(n)
All times are GMT -4. The time now is 04:23 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy