You can run top (or probably seagull) as follows using xterm for the shell 
and exporting the display.  In this example I'm starting "top" on a Linux 
machine (staf1e) from a Winodws machine.  This example also stops the 
process using its STAF handle.   You can do the same thing via a STAX 
job.:

C:\>STAF staf1e PROCESS START SHELL "xterm -title %T -e /bin/sh -c %X" 
COMMAND "top" TITLE "top" ENV "DISPLAY=:0.0"
Response
--------
2878

C:\>STAF staf1e PROCESS LIST
Response
--------
Handle Command Start Date-Time   End Date-Time Return Code
------ ------- ----------------- ------------- -----------
2878   top     20110726-12:30:43 <None>        <None>


C:\>STAF staf1e PROCESS STOP HANDLE 2878
Response
--------


C:\>STAF staf1e PROCESS LIST
Response
--------
Handle Command Start Date-Time   End Date-Time     Return Code
------ ------- ----------------- ----------------- -----------
2878   top     20110726-12:30:43 20110726-12:31:11 9


C:\>STAF staf1e PROCESS FREE HANDLE 2878
Response
--------


C:\>STAF staf1e PROCESS LIST
Response
--------


C:\>

Or, note that you can run top using its -b (batch mode) option in which 
case then you don't need to use xterm or export the display to run it. I'm 
not familiar with seagull but perhaps it has a similar option.  For 
example:

C:\>STAF staf1e PROCESS START SHELL COMMAND "top -b"
Response
--------
2901


C:\>STAF staf1e PROCESS STOP HANDLE 2901
Response
--------


C:\>

Here's a sample STAX job that uses a <stafcmd> to submit a PROCESS START 
request without the WAIT option to start the top command using xterm and 
export the display, and returns the STAF process handle for top in the 
result (since it did not wait for top to complete),  Then it delays a 
while and submits a PROCESS STOP HANDLE request to stop top.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "stax.dtd">
<stax>

<defaultcall function="Main"/> 

<function name="Main">
  <sequence>

    <script>
      machine='staf1e'  # Replace with your machine host name or IP 
address
      command = 'top'
      title = 'top'
      # Note: Must escape a % with another % so that Python does not think 
it is a formatting character
      request = 'START SHELL "xterm -title %%T -e /bin/sh -c %%X" COMMAND 
"%s" TITLE "%s" ENV "DISPLAY=:0.0"' % (command, title)
      waitTime = '5s'
    </script>

    <log message="1">'Starting top...'</log>

    <stafcmd name="'Start top'">
      <location>machine</location>
      <service>'PROCESS'</service>
      <request>request</request>
    </stafcmd>

    <if expr="RC == 0">
      <script>processHandle = STAFResult</script>
      <else>
        <sequence>
          <log message="1">
            'Error running top.  RC: %s, STAFResult: %s' % (RC, 
STAFResult)
          </log>
          <terminate/>
        </sequence>
      </else>
    </if>

    <!-- Delay while top runs -->
    <stafcmd name="'Delay for %s' % (waitTime)">
      <location>'local'</location>
      <service>'DELAY'</service>
      <request>'DELAY %s' % (waitTime)</request>
    </stafcmd>

    <log message="1">'top is done after running for %s' % (waitTime)</log>

    <stafcmd name="'Stop the process'">
      <location>machine</location>
      <service>'PROCESS'</service>
      <request>'STOP HANDLE %s' % (processHandle)</request>
    </stafcmd>

    <if expr="RC == 0">
      <log message="1">'Stopped process handle %s' % (processHandle)</log>
      <else>
        <log message="1">
          'Error stopping process handle %s' % (processHandle)
        </log>
      </else>
    </if>

    <stafcmd name="'Free the process handle'">
      <location>machine</location>
      <service>'PROCESS'</service>
      <request>'FREE HANDLE %s' % (processHandle)</request>
    </stafcmd>

  </sequence> 
</function>

</stax>

Here's another sample STAX job that runs the top command on a remote a 
Linux machine using xterm and exporting the display.  It uses a timer 
element to run the top command for a specified duration and then gets top 
sdtout output.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "stax.dtd">
<stax>

<defaultcall function="Main"/> 

<function name="Main">
  <sequence>

    <script>
      machine='staf1e'  # Replace with your machine host name or IP 
address
      duration = '10s'  # Duration to run top
    </script>

    <log message="1">'Starting top...'</log>

    <timer duration="duration">
      <sequence>

        <process name="'Run top'">
          <location>machine</location>
          <command mode="'shell'" shell="'xterm -title %T -e /bin/sh -c 
%X'">'top'</command>
          <title>'top'</title>
          <env>'DISPLAY=:0.0'</env>
          <stdout>'/tmp/top.out'</stdout>
          <stderr>'/tmp/top.err'</stderr>
          <returnstderr/>
        </process>

        <if expr="RC != 0">
          <log message="1">
            'Error running top.  RC: %s, STAFResult: %s, Stderr: %s' % 
(RC, STAFResult, STAXResult)
          </log>
        </if>

      </sequence>
    </timer>

    <log message="1">'top is done after running for %s' % (duration)</log>
 
    <!-- Get the contents of top's stdout. 
         If you don't want top's stdout output, don't do this and remove 
the
         stdout element in the above process element. -->

    <stafcmd name="'Get top stdout'">
      <location>machine</location>
      <service>'FS'</service>
      <request>'GET FILE /tmp/top.out'</request>
    </stafcmd>

    <if expr="RC == 0">
      <log message="1">'Output from top:\n%s' % (STAFResult)</log>
      <else>
        <log message="1">
          'Error getting top stdout file.  RC: %s, Result: %s' % (RC, 
STAFResult)
        </log>
      </else>
    </if>

  </sequence> 
</function>

</stax>

--------------------------------------------------------------
Sharon Lucas
IBM Austin,   luc...@us.ibm.com
(512) 286-7313 or Tieline 363-7313




From:   "Bai, William" <william....@tekelec.com>
To:     "staf-users@lists.sourceforge.net" 
<staf-users@lists.sourceforge.net>
Date:   07/26/2011 11:39 AM
Subject:        [staf-users] how to deal with command like top in STAX



Hi:
 
       I use STAX to start up seagull to test diameter protocol. But 
seagull will keep flushing the screen and output the result. When I use 
STAX to start seagull, it reports keybaord error. And I tried "top" 
command to see whether STAX could start "top" frontend, and it also 
reports error. Though I do not need the realtime monitoring result of 
seagull output on the screen, but I hope to find a way to start up seagull 
and stop them.
     Though I could put seagull to run in the background, but I could not 
stop that by terminate the job on STAX right? Could you kindly tell me how 
to deal with the commands like seagull or "top" which needs to reflushing 
the screen again and again, if let the process run in frontend, or how to 
stop them in STAX, if let them run in background. Thank you in advance.
 
BRs
William
------------------------------------------------------------------------------
Magic Quadrant for Content-Aware Data Loss Prevention
Research study explores the data loss prevention market. Includes in-depth
analysis on the changes within the DLP market, and the criteria used to
evaluate the strengths and weaknesses of these DLP solutions.
http://www.accelacomm.com/jaw/sfnl/114/51385063/
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users

------------------------------------------------------------------------------
Magic Quadrant for Content-Aware Data Loss Prevention
Research study explores the data loss prevention market. Includes in-depth
analysis on the changes within the DLP market, and the criteria used to
evaluate the strengths and weaknesses of these DLP solutions.
http://www.accelacomm.com/jaw/sfnl/114/51385063/
_______________________________________________
staf-users mailing list
staf-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/staf-users

Reply via email to