/usr/bin/expect script truncates data


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting /usr/bin/expect script truncates data
# 1  
Old 05-21-2014
/usr/bin/expect script truncates data

I have a script on a Linux machine that connects remotely, via telnet on a windows machine to launch several commands and colect their output. On the Linux machine the output of these commands is redirected in a file.

The script:
Code:
#!/usr/bin/expect

log_user 0
spawn telnet 10.10.10.10
expect "login name:"
send "user1\r"
expect "password:"
send "Pa$$w0rd@\r"
expect "Windows NT Domain:"
send "\r"
#expect "C:\WINNT\Profiles\focore>"
sleep 1
send "echo prcstate\r"
send "prcstate -l\r"
sleep 1
send "echo hwmls\r"
send "hwmls\r"
sleep 1
send "echo hwmscbls\r"
send "hwmscbls\r"
sleep 1
send "echo cluster res\r"
send "cluster res\r"
sleep 1
send "echo cluster node\r"
send "cluster node\r"
sleep 1
send "echo cluster group\r"
send "cluster group\r"
sleep 1
send "echo cluster netint\r"
send "cluster netint\r"
sleep 1
send "echo mtzln -p\r"
send "mtzln -p\r"
sleep 1
send "echo time /t\r"
send "time /t\r"
sleep 1
send "echo date /t\r"
send "date /t\r"


send "exit\r"
interact
exit

When I launch the script "manually" from the shell
Code:
 ./expect.sh > output.txt

The entire output is capted.
When I schedule the script in crontab no output is capted (probably due to the "interact" part of the script).
When I use a wrapper script which launches expect.sh and schedule the wrapper script in crontab output.txt contains only exactly 4.0 Kb and truncates the output of the commands in expect.sh
Code:
 cat wrapper.sh
#!/bin/bash

target_log=/absolute_path/output.txt

rm -f $target_log

/absolute_path/expect.sh >> $target_log

I'm new to expect and I don;t know how to overcome this. I've red about a full_buffer command but didn;t succeed to get the right syntax to implement it in my script.
Any ideas how to overcome this ?
# 2  
Old 05-21-2014
why do you use interact
try change to "interact" to "expect eof" (or just remove "interact" ) and re-try

regards
ygemici
# 3  
Old 05-21-2014
Quote:
Originally Posted by ygemici
why do you use interact
try change to "interact" to "expect eof" (or just remove "interact" ) and re-try

regards
ygemici
Already tried exactly this. replaced in my script the "interact" line with "expect eof" and it doesn;t work at all neither directly from shell, neither from crontab.
# 4  
Old 05-21-2014
In what way does it "not work"?
# 5  
Old 05-21-2014
Can you write the cronjob entry?
Can see any log in the system cron logs about this job(CMD)
# 6  
Old 05-28-2014
Quote:
Originally Posted by ygemici
Can you write the cronjob entry?
Can see any log in the system cron logs about this job(CMD)
yes. I used this script now :
Code:
#!/usr/bin/expect

log_user 0
spawn telnet 10.21.222.222
expect "login name:"
send "focore\r"
expect "password:"
send "pwd\r"
expect "Windows NT Domain:"
send "\r"
sleep 1
send "mml\r"
sleep 1
send "ihalp:epid=all;\r"
sleep 9

send "exit;\r"
sleep 1
send "exit\r"
interact
exit

The crontab entry :
Code:
 10 * * * * /absolute_path/script_test.sh > /absolute_path/sample.txt

Cron logs :
Code:
From root@NagiosPM.posteM.it  Wed May 28 09:27:14 2014
Return-Path: <root@NagiosPM.posteM.it>
X-Original-To: mnuser
Delivered-To: mnuser@NagiosPM.posteM.it
Received: by NagiosPM.posteM.it (Postfix, from userid 500)
        id 68B0F121A4A; Wed, 28 May 2014 09:27:14 +0200 (CEST)
From: root@NagiosPM.posteM.it (Cron Daemon)
To: mnuser@NagiosPM.posteM.it
Subject: Cron <mnuser@NagiosPM> /box/monitoring/scripts/CN/CP/script_test.sh
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/box/monitoring>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=mnuser>
X-Cron-Env: <USER=mnuser>
Message-Id: <20140528072714.68B0F121A4A@NagiosPM.posteM.it>
Date: Wed, 28 May 2014 09:27:14 +0200 (CEST)

^MVerifying user credentials. Please wait...
^M
Login ok...

Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.

C:\WINNT\Profiles\focore^C>mml
WO      PMSSMI1    192020000321   AD-718  TIME 140528 0927  PAGE    1
^C<ihalp:epid=all;
SCTP ASSOCIATION LIST DATA

EPID    EPSTATE         LPN              USER
EM2N2S6 IN SERVICE      3565             M2PA

LIP
10.21.248.214
10.21.248.198

SAID            SASTATE            RPN   OS    MODE
PMSSTP1_M2N2_2  ASSOCESTABL        3566  2     SERVER

RIP                                      RIPSTATE
10.21.238.154                            ACTIVE
10.21.238.146                            ACTIVE

SAID            SASTATE            RPN   OS    MODE
PMSSTO1_M2N2_2  ASSOCESTABL        3566  2     SERVER

RIP                                      RIPSTATE
10.21.224.214                            ACTIVE
10.21.224.198                            ACTIVE

EPID    EPSTATE         LPN              USER
EM2N2S5 IN SERVICE      3565             M2PA

LIP
10.21.248.197
10.21.248.213

SAID            SASTATE            RPN   OS    MODE
PMSSTP1_M2N2_1  ASSOCESTABL        3566  2     SERVER

RIP                                      RIPSTATE
10.21.238.145                            ACTIVE
10.21.238.153                            ACTIVE

SAID            SASTATE            RPN   OS    MODE
PMSSTO1_M2N2_1  ASSOCESTABL        3566  2     SERVER

RIP                                      RIPSTATE
10.21.224.197                            ACTIVE
10.21.224.213                            ACTIVE

EPID    EPSTATE         LPN              USER
EM2N2S4 IN SERVICE      3565             M2PA

LIP
10.21.248.212
10.21.248.196

SAID            SASTATE            RPN   OS    MODE
WSTPRM1_M2N2_2  ASSOCESTABL        3565  2     SERVER

RIP                                      RIPSTATE
10.21.224.83                             NOT ACTIVE
10.21.224.67                             ACTIVE

EPID    EPSTATE         LPN              USER
EM2N2S3 IN SERVICE      3565             M2PA

LIP
10.21.248.195
10.21.248.211

SAID            SASTATE            RPN   OS    MODE
WSTPRM1_M2N2_1  ASSOCESTABL        3565  2     SERVER

RIP                                      RIPSTATE
10.21.224.66                             ACTIVE
10.21.224.82                             ACTIVE

EPID    EPSTATE         LPN              USER
EM2N2S2 IN SERVICE      3565             M2PA

LIP
10.21.248.210
10.21.248.194

SAID            SASTATE            RPN   OS    MODE
WSTPMI1_M2N2_2  ASSOCESTABL        3565  2     SERVER

RIP                                      RIPSTATE
10.21.248.83                             ACTIVE
10.21.248.67                             ACTIVE

EPID    EPSTATE         LPN              USER
EM2N2S1 IN SERVICE      3565             M2PA

LIP
10.21.248.193
10.21.248.209

SAID            SASTATE            RPN   OS    MODE
WSTPMI1_M2N2_1  ASSOCESTABL        3565  2     SERVER

RIP                                      RIPSTATE
10.21.248.66                             ACTIVE
10.21.248.82                             ACTIVE

EPID    EPSTATE         LPN              USER
EM3N3S6 IN SERVICE      2907             M3UA

LIP
10.21.248.214
10.21.248.198

SAID            SASTATE            RPN   OS    MODE
PMGWMI1_M3N3_4  ASSOCESTABL        2907  17    SERVER

RIP                                      RIPSTATE
10.21.249.18                             ACTIVE
10.21.249.2                              ACTIVE

EPID    EPSTATE         LPN              USER
EM3N3S5 IN SERVICE      2907             M3UA

LIP
10.21.248.197
10.21.248.213

SAID            SASTATE            RPN   OS    MODE
PMGWMI1_M3N3_3  ASSOCESTABL        2907  17    SERVER

RIP                                      RIPSTATE
10.21.249.1                              ACTIVE
10.21.249.17                             ACTIVE

EPID    EPSTATE         LPN              USER
EM3N3S4 IN SERVICE      2907             M3UA

LIP
10.21.248.212
10.2

As you can see, in the cron log appears also the output of the script (I don't know why) and the output is truncated exactly after 4Kb. You can see the last line truncated, that is exactly how the output is redirected in my file.

---------- Post updated at 02:52 AM ---------- Previous update was at 02:46 AM ----------

Quote:
Originally Posted by Corona688
In what way does it "not work"?
Does not work in the sense that you launch the script, you expect some output but instead nothing happens. The finishes its execution without displaying any errors nor any output

Last edited by black_fender; 05-28-2014 at 05:03 AM..
# 7  
Old 06-09-2014
hi black_fender,

add -> "sleep 1" after the ( send "pwd\r" ) wait for auth
remove -> last exit (send "exit\r") unneccessary
remove -> (expect "Windows NT Domain:") unneccessary
change to -> "interact" to ( "expect eof" ) tell to our "expect script", we wait to closed the server's connection and expect programm is over. necessary
if its (expect eof) is not in your script, then your output direction may cannot completed because of expect script is closing without completion processes.
so last view :

Code:
#!/usr/bin/expect
log_user 0
spawn telnet 10.21.222.222
expect "login name:"
send "focore\r"
expect "password:"
send "pwd\r"
sleep 1
send "mml\r"
sleep 1
send "ihalp:epid=all;\r"
sleep 9
send "exit;\r"
sleep 1
expect eof
exit


regards
ygemici
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. BSD

FreeBSD: /usr/bin/ld not looking in /usr/local/lib

I'm not sure if this is the default behavior for the ld command, but it does not seem to be looking in /usr/local/lib for shared libraries. I was trying to compile the latest version of Kanatest from svn. The autorgen.sh script seems to exit without too much trouble: $ ./autogen.sh checking... (2 Replies)
Discussion started by: AntumDeluge
2 Replies

2. Shell Programming and Scripting

AIX -/usr/bin/expect shows output Don't know why.

Hi, I have been programming with the expect program for a while now and have create a series of menu driven checks for the operations team. One thing I have noticed is that I call a remote script and pass parameters and this is display on the screen....for example. Within the script ... (0 Replies)
Discussion started by: yakky
0 Replies

3. Solaris

What is the difference between xpg4/bin and usr/bin?

Hi Experts, I found that the same commands(sort, du, df, find, grep etc.) exists in both dir. What is the difference to use them? i.e: to use xpg4/bin/grep and usr/bin/grep My OS version is SunOS 5.10 Regards, Saps (7 Replies)
Discussion started by: saps19
7 Replies

4. OS X (Apple)

When to use /Users/m/bin instead of /usr/local/bin (& whats the diff?)?

Q1. I understand that /usr/local/bin means I can install/uninstall stuff in here and have any chance of messing up my original system files or effecting any other users. I created this directory myself. But what about the directory I didn't create, namely /Users/m/bin? How is that directory... (1 Reply)
Discussion started by: michellepace
1 Replies

5. UNIX for Dummies Questions & Answers

Alias /usr/bin to /bin in profile

Hi! All the basic linux commands, ie. echo, find, etc, are located in /bin. I have a couple of programs that have these commands pointed towards /usr/bin, ie, /usr/bin/echo (even though the actual 'echo' command is in /bin). How can I alias or redirect or link the /usr/bin to /bin just for this... (6 Replies)
Discussion started by: dancerat
6 Replies

6. Solaris

How do I link ld in /usr/ucb/ to /usr/ccs/bin?

Hi all, below is the problem details: ora10g@CNORACLE1>which ld /usr/ucb/ld ora10g@CNORACLE1>cd /usr/ccs/bin ora10g@CNORACLE1>ln -s /usr/ucb/ld ld ln: cannot create ld: File exists ora10g@CNORACLE1> how to link it to /usr/ccs/bin? (6 Replies)
Discussion started by: SmartAntz
6 Replies

7. Shell Programming and Scripting

Script can't see /usr/bin???

Hello all, I have the following script (still in early stages), and although I can't help but think that the problem is very simple, I can't think of a solution. My script can't see binaries in /usr/bin. This isn't a problem with my login shell as I can execute these commands OK there. I've... (1 Reply)
Discussion started by: michaeltravisuk
1 Replies

8. Shell Programming and Scripting

#!/usr/bin/ksh Command Interpreter in a sh script

Hi, I have a developer that is trying to start a script with sh "scriptname". In the script, he is specifying #!/usr/bin/ksh as the command interpreter. For some reason sh is ignoring the #!/usr/bin/ksh. We are running Solaris 8. Does anyone have any ideas what could be causing this? Here... (3 Replies)
Discussion started by: ckeith79
3 Replies

9. UNIX for Dummies Questions & Answers

/bin/sh: /usr/bin/vi: No such file or directory when doing crontab

I just set up an ftp server with Red Hat 5.2. I am doing the work, I'm baby stepping, but it seems like every step I get stuck. Currently, I'm trying to set up a crontab job, but I'm getting the following message: /bin/sh: /usr/bin/vi: No such file or directory. I see that vi exists in /bin/vi,... (3 Replies)
Discussion started by: kwalter
3 Replies
Login or Register to Ask a Question