How to check if an application has been installed on a unix/linux box?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How to check if an application has been installed on a unix/linux box?
# 1  
Old 06-26-2011
How to check if an application has been installed on a unix/linux box?

hi, guys,

now I face a problem. I have developed an application, and when it starts, it shall check if an application has been installed on the running linux/unix. If result is positive, i do something with the application command.

just as an example: I want to check if sshd has been installed. this requirement is supposed to be distribution independent. So
on my Arch box, usually "sshd" can be found at /etc/rc.d/sshd
however on a debian/ubuntu box, it usually is located at /etc/init.d/sshd
is there a general way, say give me the "/etc/rc.d" or "/etc/init.d" directory on the system?

thanx
# 2  
Old 06-26-2011
There is no "universal" command that is guaranteed to work on *ALL* UNIX/Linux flavors.

RHEL-based have rpm, Solaris has pkginfo, Debian-based have dpkg, I don't know about Arch but you get the point.

A simpler generic approach would be to find / -type f -name "sshd" but it's not bulletproof.

Another option would be to match your commands against /etc/*release but -again- it's not bulletproof either; I've seen several sysadmins modify this file in order to trick the system so that they can install unsupported applications (Oracle for example). Something like this:

Code:
if [ -n "$(egrep -i "(red hat|rh|rhel)" /etc/*release 2>/dev/null)" ];then
	# "service" or "rpm -q" or look for sshd in /etc/init.d
elif [ -n "$(egrep -i "(debian)" /etc/*release 2>/dev/null)" ];then
	# look for sshd in /etc/init.d
elif [ -n "$(egrep -i "(solaris|sunos)" /etc/*release 2>/dev/null)" ];then
	# svcadm or look for sshd in /etc/init.d
elif [ -n "$(egrep -i "(arch)" /etc/*release 2>/dev/null)" ];then
	# look for file in /etc/rc.d/
elif	
	# ...etc...
fi

The above code for instance won't work on a Linux minimal installation as it relies on "egrep" command.

It would be easier if you were looking for running processes; ps almost works the same in all Unix/Linux (either ps -A or ps -e should do).
# 3  
Old 06-26-2011
thx for your explaination.
what I want to do is, when my toy starts, check if the certain service/software startup script, say sshd, under /etc/init.d/ or /etc/rc.d/, if it is there, I will run that start-up script, like sshd start|stop|....

However I am not sure if all unix/linux distributions place those start-up scripts under etiher /etc/init.d or /etc/rc.d then invoking some of them in certain runlevel setting.

if it was so, i can just test if "sshd" is under either of above 2 directories.
# 4  
Old 06-26-2011
Not as simple as you think. Many Linux distributions are moving away from BSD or SysV startup scripts towards systemd or something similar. Solaris 10 went to Service Manager.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Bash find version of an installed application but if none is found set variable to App Not Installed

Hello Forum, I'm issuing a one line bash command to look for the version of an installed application and saving the result to a variable like so: APP=application --version But if the application is not installed I want to return to my variable that the Application is not installed. So I'm... (2 Replies)
Discussion started by: greavette
2 Replies

2. Shell Programming and Scripting

Script to check if SQLLDR has been installed on Unix/Aix servers

How can i check if sqlldr has been installed on my AIX/UNIX mechine? Is there any unix script to check this one out.... (0 Replies)
Discussion started by: msrahman
0 Replies

3. UNIX for Dummies Questions & Answers

Need to find the OS JRE as well as User installed JRE on my UNIX box!

Hi, I want to determine whether my java application is pointing to the OS version of Java or the User installed Java version on my Unix box. I am aware of the "java -version" command, however I am unsure if the version returned is the OS one or the user one. Please help. Ali. (5 Replies)
Discussion started by: ali40
5 Replies

4. UNIX for Dummies Questions & Answers

Copying application directory from one unix box to another

Hi , if I copy an application directory (with all its subdirectories) from one unix box to another (suppose same version), will that application work in the 2nd unix box? (3 Replies)
Discussion started by: me_saby
3 Replies

5. Red Hat

How to check if the Linux Box is available

Hi, I need to query and find out if anyone is logged into a Linux box or if the Linux Box is free available for login. This information is required to post the availability of the Linux Host for an instrument for another user to start using the instrument. Is there a command or script to query... (3 Replies)
Discussion started by: dks
3 Replies

6. Solaris

Listing application installed on a Solaris box

I am trying to list all the applications that is installed on my sun solaris box. I have used the command pkginfo but it only give me the applications that was bundled with solaris. This machine runs oracle and pkginfo command does not list that. Any idea to get to list all the applications... (1 Reply)
Discussion started by: ibroxy
1 Replies

7. AIX

Can I make application for AIX while working on Linux Box

Hi all, I had a large application created using Visual C++. I ported that application using WINE to the Linux platform (ofcourse x86). Now I have to port the same application to AIX which runs over IBM mainframe. I dont have mainframe available but it is required for me to port my application to... (1 Reply)
Discussion started by: noble_curious
1 Replies

8. Solaris

Check if an application is accessible when trying to use http://localhost in Unix

Hm am the perfect newbie:o I handle an application on a production servers having a SunOS 5.8 and iplanet webserver instance. Users trying to access it on https are getting "Cannot find the server". I checked with the n/w and secuirty and they said traffic is allowed to the server. Everything... (6 Replies)
Discussion started by: JimmyJ
6 Replies

9. UNIX for Dummies Questions & Answers

unix script to check if rsh to box and send status mail

rshstatus=`rsh -n lilo /db/p2/oracle/names9208/restart_names.sh` if $rshstatus <>0 then errstatus=1 mailx -s "xirsol8dr" ordba@xxx.com >> $log_dr else if errstatus=0 echo "status to xirsol8dr successful" can anyone provide if this is t he correct way to do this or is there a better way? (1 Reply)
Discussion started by: bpm12
1 Replies

10. Shell Programming and Scripting

How to run an application installed in another unix pc?

Do you guys have any suggestions? hpterm -e rlogin <another unix pc> ??? (1 Reply)
Discussion started by: jehrome_rando
1 Replies
Login or Register to Ask a Question