Read input data within a specified period of time


 
Thread Tools Search this Thread
Operating Systems AIX Read input data within a specified period of time
# 15  
Old 12-16-2010
Thanks for reply. Here is how I run it.
The name of script is delay.sh
Code:
sh delay.sh
Enter input:2010-12-12
kill: 3956770: 0403-003 The specified process does not exist.
Using default value

Thanks for ur efforts ROHON,appreciate it.. but it is not able to locate that process.
What do you think..?

Regards,
raj

Last edited by Scott; 12-16-2010 at 08:47 AM.. Reason: Code tags
# 16  
Old 12-16-2010
Will u run it as following and revert with the entire output comes on your screen. It is for debugging a script.

$ ksh -x delay.sh
R0H0N
# 17  
Old 12-16-2010
ROHON, Here is debugging result:
Code:
ksh -x delay.sh
+ echo Enter input:\c
Enter input:+ perl /usrdir/charReading.pl 10
+ pid=6570172
+ sleep 10
2010-12-12+ [ -s /tmp/optFile ]
+ kill -9 6570172
kill: 6570172: 0403-003 The specified process does not exist.
+ echo Using default value
Using default value

Thanks
raj

Last edited by Scott; 12-16-2010 at 08:48 AM.. Reason: Code tags
# 18  
Old 12-16-2010
Hi Raj Sharma,
Sorry for the late replying. I have made some changes in both the codes. Please try this and revert if not done.


Shell script “delay.sh”
Code:
 > timeoutFile                     # Creating one 0 byte file
  echo "Enter input:\c"
  charReading.pl 10 &
  pid=$!
  sleep 10
  if [ -s "timeoutFile" ] ; then     # This means something has been entered in between 10 seconds of sleep which was recorded in this file. So, if this file is not empty after 10 seconds then no timeout.
      input=`cat /tmp/optFile`

    echo "Using input value = [${input}]"
  else
      kill -9 $pid
      echo "Using default value"    
  fi

Perl code “charReading.pl”
Code:
 #! /usr/bin/perl -w
  #
  # Usage:
  #     charReading.pl <Number of Chars to read>
  #     charReading.pl 10        # In your case
  #
   
  my $maxChars = $ARGV[0];
   
  use strict;
  use FileHandle;
  my $FOBJ = new FileHandle ">/tmp/optFile";
   
  $| = 1;
  my $finalString = "";
   
  while ($maxChars != 0) {
      my $khatm = 0;
      for (1..$maxChars) {
          my $cChar;
          $cChar = getOneChar();
          system("echo kaipan > timeoutFile");    # Echoing kaipan in timeoutFile if user has entered any character
          if ($cChar ne "\n") {
          if ($cChar eq "\b") {
              chop($finalString);
              print "$cChar \b";
              $khatm += 2;
          } else {
              $finalString .= $cChar;
              print "$cChar";
          }
          } else {
              $khatm += 1;
          }
      }
      $maxChars = $khatm;
  }
   
  print $FOBJ "$finalString";
  exit; 
   
  BEGIN {
      use POSIX qw(:termios_h);  
      my ($term, $oterm, $echo, $noecho, $fd_stdin);
      $fd_stdin = fileno(STDIN);
      $term = POSIX::Termios->new();
      $term->getattr($fd_stdin); 
      $oterm = $term->getlflag();
      $echo = ECHO | ECHOK | ICANON;
      $noecho = $oterm & ~$echo; 
   
      sub cbreak {
          $term->setlflag($noecho);
          $term->setcc(VTIME, 1);
          $term->setattr($fd_stdin, TCSANOW); 
      }  
     
      sub cooked {
          $term->setlflag($oterm);
          $term->setcc(VTIME, 0);
          $term->setattr($fd_stdin, TCSANOW);  
      }    
      sub getOneChar { 
          my $key = '';
          cbreak();  
          sysread(STDIN, $key, 1); 
                                  cooked(); 
          return $key;  
      }  
  }
  END {
      cooked()
  }

R0H0N
# 19  
Old 12-29-2010
Hi ROHON,

Sorry for replying too late,was out of station.

When I run ur latest code as:
sh delay.sh
Enter input:2010-12-12
Using input value = []

Seems to work fine when I give some input string and do not press "enter".
But in this case /tmp/optFile doesnot store anything.I do not know the reason!

When I run it withoutgiving any input as
sh delay.sh
Enter input:Using input value = []

It shud give output as "Using Default value".


And more, when I run it in debuging mode as:
sh -x time.sh
+ 1> timeoutFile
+ echo Enter input:\c
Enter input:+ perl /usrdir/charReading.pl 10
+ pid=8568904
+ sleep 10
2010-12-12+ [ -s timeoutFile ]
+ + cat /tmp/optFile
input=
+ echo Using input value = []
Using input value = []


I hope this could give u some indications.
Thanks for ur time,
Regards,
raj.

Last edited by rajsharma; 12-29-2010 at 04:28 AM..
# 20  
Old 12-29-2010
Quote:
When I run ur latest code as:
sh delay.sh
Enter input:2010-12-12
Using input value = []

Seems to work fine when I give some input string and do not press "enter".
But in this case /tmp/optFile doesnot store anything.I do not know the reason!
It is becuase the input is stored in /tmp/optFile at the end of the charReading.pl program execution. So, u will not find anything in that file untill charReading.pl program in running.

Quote:
When I run it withoutgiving any input as
sh delay.sh
Enter input:Using input value = []

It shud give output as "Using Default value".
Little bit of change in shell script.

Code:
if [ -s "timeoutFile" ] ; then
      while ps -p $pid ; do            # This will ensure that charReading.pl process is completed.
         sleep 1
      done         
      input=`cat /tmp/optFile`         # After that only input will be fetched from optFile
      echo "Using input value = [${input}]"
else
      kill -9 $pid
      echo "Using default value"    
fi

R0H0N
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to get the shell script to read the .txt file as an input/data?

i have written my shell script in notepad however i am struggling to pass the data file to be read to the script the data file is of .txt format. My target is to run the shell script from the terminal and pass 3 arguments e.g. polg@DESKTOP-BVPDC5C:~/CS1420/coursework$ bash valsplit.sh input.txt... (11 Replies)
Discussion started by: Gurdza32
11 Replies

2. Shell Programming and Scripting

To get the Files between Time Period

All, How to get the list of files through a unix command which exists / created / updated between 8 PM to 11:59 PM from a particular location. Regards Oracle User (3 Replies)
Discussion started by: Oracle_User
3 Replies

3. Shell Programming and Scripting

Get connection count over a period of time

I used this script to get the connection to a domain in two specific minutes. I need to extend to give result over a range of minutes. The below gives total number of connections in the minutes 00:40 and 01:13 on 22nd March. egrep "22/Mar/2013:00:40|22/Mar/2013:01:13"... (1 Reply)
Discussion started by: anil510
1 Replies

4. Shell Programming and Scripting

Read user input, Encrypt the data and write to file

Hi, can some one help me how to encrypt and decrypt a file. AIM: reade user input, encrypt it and save it to file. while decryption read the encrypted file decrypt it and save the output in some variable. Example: consider we have Credentials.txt file with content username: password... (5 Replies)
Discussion started by: saichand1985
5 Replies

5. HP-UX

memory consumption over a time period

Hi, Can some one please tell me how do I generate a report of the Memory Consumption over a time period: HP-UX B.11.31 U ia64 0440531406 unlimited-user license I normally use glance to monitor memory in run time. Note: I do not have root privileges. Thanks Danish ... (5 Replies)
Discussion started by: danish0909
5 Replies

6. Shell Programming and Scripting

Help with Bash piped while-read and a read user input at the same time

Hi I am new to writing script and want to use a Bash Piped while-read and read from user input. if something happens on server.log then do while loop or if something happend on user input then do while loop. Pseudocode something like: tail -n 3 -f server.log | while read serverline || read... (8 Replies)
Discussion started by: MyMorris
8 Replies

7. UNIX for Dummies Questions & Answers

Start Time and period of a PID

Hi, Below is my OS details. uname -an SunOS mymachine 5.10 Generic_144488-07 sun4v sparc SUNW,SPARC-Enterprise-T5220 I need to know when was my Apache server last started. Whats is the best and most reliable way to find out not just for Apache but for any PID per say? I am... (16 Replies)
Discussion started by: mohtashims
16 Replies

8. Shell Programming and Scripting

Calculate Time Period in Scripting

Hi all, now i am writting one bash script. in that my requirement is i need to create one directory and that the directory details to be stored in one file Ex. date/time and all in one file. after that i need to delete the folder automatically exactly after 3months. between these time... (5 Replies)
Discussion started by: anishkumarv
5 Replies

9. Shell Programming and Scripting

read/writte/input data in file.

Hi, how can i do to show when i do with scrip list entris, or list specific entry, it show 2 lines when i specify the entry to search...¿? i paste the script: # Global variables film=/opt/etc/film/film.txt export film confirm() { echo -en "$@" read ans ans=`echo $ans | tr... (0 Replies)
Discussion started by: dorek
0 Replies

10. Shell Programming and Scripting

Run job for a period of time

I have a job that runs for an unspecified amount of time. I want to run this as a cron job for a specified amount of time, say 2 hours. Once the time is up, the program should be killed in the middle of execution. How can I do this? Thanks. (5 Replies)
Discussion started by: cooldude
5 Replies
Login or Register to Ask a Question