Question

How to get a remote unix Process ID?

Asked by: mxkhec01

I have an application that runs on Solaris (Host1), and I can get the pids using my application on Host1, I can get Memory usage and cpu consumption with this PID in Host1, but... I would like to know cpu, memory and network consumption on the client machine(Host2) which normally is a solaris box. Is there any way I can get the PID on host2 related to PID on host1 by running a script on host1?

Regards,

Hugo

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2003-11-03 at 08:38:54ID20786321
Tags

process

,

unix

,

get

Topic

Unix Systems Programming

Participating Experts
4
Points
250
Comments
7

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Finding Cpu usage
    Hello I want to find the cpu usage , for a servlet running in apache server? How can I find it out? Thanks sridhar
  2. about /proc/PID/fd directory
    what kind of messages stored in /proc/PID/fd directory? i use du -k to discover it. i found that one of the /proc/PID/fd directory is very huge,nearly 11G. my system is solaris 7 on E450 with 2G RAM 6G swap.and my /swap nearly no space left. i restart the process,and it w...
  3. solaris swap consumption/activity per process
    We have a certain rogue process which consumes a lot of swap.But we have not been able to identify that process from the top output ,as it does not reflect in the CPU consumption stats dispayed through TOP utility. How can i find out the process which is causing this excessi...
  4. get cpu usage info from /proc/[pid]
    How can I get the % cpu usage for a particular process from /proc/[pid]? I would also like to know if there is any way to retrieve a cpu usage "average" for a particular process...
  5. How to find CPU usage details in SUN Ultra-Enterprise ?
    Hello, Need your help. I'm new to Solaris administration. In our company, we use Sitescope to monitor the servers and network. Now it showing an alert on a Solaris server that its CPU utilization(6 CPUs) is 100%. Like this: "datamall CPU 100% avg, cpu1 100%, cpu2 100...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: rishiskPosted on 2003-11-03 at 10:01:00ID: 9672698

mxkhec01, I'm not sure what you mean by, get the PID on host2 "related to PID on host1".

Anyway, You can try the rsh command for executing commands on a remote machine from a host. There are a few things you might have to do allow remote connections. Check out man rsh.

Hope it helps.

 

by: mxkhec01Posted on 2003-11-03 at 10:44:47ID: 9672988

What I mean is... imagine you are on host1, from there you telnet to host2 ...

you will have a process on host2

user 16858 16856  0 11:13:49 pts/20   0:00 -ksh
root  16856    262  0 11:13:48 ?        0:00 in.telnetd

and you will have a process on host1

user 19927 19916  0 11:07:05 pts/2    0:00 telnet host2

Now my question is, by being on host2, is there anyway you can get the pid on host1 related to process on host2 (how can you match process 16858 to process 19927???)

 

by: shivsaPosted on 2003-11-03 at 11:22:50ID: 9673252

use ruptime.

check for man ruptime.

 

by: shivsaPosted on 2003-11-03 at 11:25:38ID: 9673266

u can use rsh command also to see process ids on other unix systems.

please read man page for rsh to configure rsh. u may need to create /.rhosts files, and put other unix system name.

and then u can use rsh command to check process id, and whatever information u need to gather.

 

by: yuzhPosted on 2003-11-03 at 16:53:30ID: 9675316

rsh can do the job, for security reason consider to use secure shell instead.

you can get openssh for Solaris from:
http://sunfreeware.com/

Here's the syntax for using ssh:

ssh -l login-name remote-host command

eg
ssh -l login-name remote-host "/path-to/test.sh arg1 arg2"

Or you can use:

ssh login-name@remote-host command

eg:
ssh login-name@remote-host "/path-to/test.sh arg1 arg2"


If you want to use ssh in a script,  you can setup ssh without password:
http://www.cvrti.utah.edu/~dustman/no-more-pw-ssh/
http://www.experts-exchange.com/Networking/Linux_Networking/Q_20677059.html
http://bumblebee.lcs.mit.edu/ssh2/
http://www.cs.umd.edu/~arun/misc/ssh.html
http://pigtail.net/LRP/printsrv/keygen.html

Or

Use ssh with password, write the backup script first, then use an "expect" script to run
the backup script and handle the password.

To use "expect" to handle the passwd, and make the passwd as a command line arg.

You need to have "expect" + TCL/TK  install on your system.

information about expect (including script example can be found):

http://expect.nist.gov/

also have a look at
http://www.experts-exchange.com/Operating_Systems/Q_20603260.html


 

by: ppentchevPosted on 2003-11-04 at 15:53:41ID: 9683214

If I understand the question correctly - you are running a network-aware application that somebody connects to, and you want to figure out who it is that has connected to it - then no, there is no reliable way to do that.

There have been several attempts to do something like this, most notably the Authentication Server as described in RFC 931, commonly known as 'auth' or 'identd'.  However, all of those mechanisms ultimately rely on information that has to be provided by a process running on the remote host, and that's where the problem comes in: can you really trust it?  Can you really assume that when some process on some machine tells you that it is running as user ID 505 and username 'mxkhec', this really is true?  In the end, the answer is 'no'.

In case you are not really worried about security, there is one simple and a couple of more complicated ways to try to figure out who has connected to you.  All of them require that you know the IP addresses and port numbers for the connection - both local and remote.  This can be done easily in most programming languages: the getsockname(2) and getpeername(2) system calls in C, the similar getsockname() and getpeername() functions in Perl, or the peername/sockname methods of the Perl IO::Socket module, and so on.  If you want to limit yourself to shell scripting, this can be done using e.g. the 'getpeername' and 'getsockname' utilities from the netpipes package - <URL:http://web.purplefrog.com/~thoth/netpipes/ftp/>.  All of these functions or utilities should be applied to the file descriptor which holds the socket - if you have opened a telnet connection, you would usually have the choice of file descriptors 0, 1, and 2, though there are cases when those file descriptors would actually be connected to virtual terminals (/dev/tty* pseudo-devices) and not real sockets.  In some cases, such as when using the Secure Shell (SSH), the server would set an environment variable with this information, but sometimes it won't.

As an example, imagine that I have opened a TCP connection from a machine named 'straylight' to another machine named 'db', and something on 'db' wants to figure out who am I on 'straylight'.  That "something" (most likely a program) would invoke the getsockname() and getpeername() system calls, and find out that the connection was made from 10.0.8.129 port 4356 (this is straylight) to 10.0.8.9 port 22 (this is db).

Once you have established the local and remote addresses and ports, the easiest way to actually determine the user ID / username would be to use the auth protocol: open a TCP connection to port 113 of the remote machine and send a line of text containing first the remote port number, then your local port number, separated by a comma (and for compatibility with all kinds of identd's out there, it never hurts to put spaces around the comma), like this:

[roam@db:pts/3 ~/tmp]$ telnet 10.0.8.129 113
Trying 10.0.8.129...
Connected to 10.0.8.129.
Escape character is '^]'.
4356 , 22
4356 , 22 : USERID : FreeBSD : roam
Connection closed by foreign host.
[roam@db:pts/3 ~/tmp]$

Here, the first line - "4356 , 22" - is what I typed (or what the program on 'db' would send).  Thus, I made a request to the identd server on straylight to tell me what is the program that has port 4356 on that side, and port 22 on mine.  The auth server replied with the next line - '4356 , 22 : USERID : FreeBSD : roam' - telling me that the program is running as user 'roam', and (most ident servers won't do that for security reasons) that the machine is running the FreeBSD OS.  For more information about the auth/ident protocol, take a look at RFC 931, e.g. at <URL:http://www.faqs.org/rfcs/rfc931.html>.

Another way for the program on db to determine who has connected to it from straylight would be to connect back to straylight and run some program there.  There are two programs often used for the purpose: the 'fuser' utility on System V OS's, and the 'lsof' program on pretty much all Unix-like OS's.  If you have 'fuser' on your machine, you can connect to straylight and execute the 'fuser -n tcp 22,10.0.8.129,4356' command - see the fuser(1) or fuser(8) manual page for more info.  If you have installed the 'lsof' utility, again, you have to connect to straylight and run the 'lsof -n -i tcp@10.0.8.129:4356' command; again, for more information, consult the lsof(1) manual page.

Note that in all three scenarios: an auth query, fuser, or lsof - you are dependent on whether the remote server will really behave itself and give an 'honest' answer, and there is absolutely no way to verify that answer.  A prime example of this was the reason why the auth service, once widely used for authentication, is now pretty much disabled everywhere: it could be depended upon once, when most machines were Unix terminal servers and nobody but the actual system administrator could start processes that could bind to port 113, but now that everybody has either a Windows or their own personal Unix machine, it is very, very probable that the response will not come from a "real" auth service, but from some program specifically instructed to give that particular response so to fool any authentication attempts.  The same goes for the fuser and lsof methods - you can never be sure that the fuser or lsof commands that you are executing are the "real" commands, and not some backdoored/trojaned versions tailored specifically for this reason.

Hope that helped a bit, and sorry for the long-winded explanation :)

G'luck,
Peter

 

by: mxkhec01Posted on 2003-11-05 at 09:03:47ID: 9688246

Thank you very much for the info, I was able to do some testing with lsof before I saw your answer and this could do the work, but I will try to use the identd part to see if it consumes less resources in my scripts.

Regards,

Hugo

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...