Sponsored Content
Full Discussion: IF ELSE in EXPECT script
Top Forums Shell Programming and Scripting IF ELSE in EXPECT script Post 303040241 by TheMegaSage on Friday 25th of October 2019 09:20:19 AM
Old 10-25-2019
IF ELSE in EXPECT script

I have an Expect script I've re-purposed from another process, and I would like to add in an IF THEN ELSE condition. I would greatly appreciate some help with the syntax.

The purpose of the script is to send a file to an FTP site. It works as it is right now (as in, the script actually does FTP the file over), it's just that occasionally the FTP site will reject my connection. It's totally intermittent, and I'm working with the company to get them to fix their damn FTP site ... but you know how it is. It MUST be something on my end. Smilie

Anyway, my goal is to get them to fix their FTP site or to migrate me to another one, but in the interim, and because it's good coding anyway, I'd like to add an IF ELSE THEN to my script. IF the FTP site returns a "Connection Refused", THEN try again, ELSE use my current code. Basically I'd like to keep trying until it works or fails 5 times kinda thing.

**CURRENT SCRIPT THAT WORKS TO SEND THE FILE (unless there is a connection error):**
Code:
    HOST=$1  
    USER=$2  
    PASSWD=$3  
    FILE=$4  

    #lftp<<END_SCRIPT  
    #open sftp://$HOST  
    #user $USER $PASSWD  
    #put $FILE  
    #bye  
    #END_SCRIPT  

    expect -c "  
    spawn sftp ${USER}@${HOST}  
    expect \"password:\"  
    send \"${PASSWD}\r\"  
    expect \"sftp>\"  
    send \"cd /import/nonCC/data\r\"  
    expect \"sftp>\"  
    send \"put ${FILE}\r\"  
    expect \"sftp>\"  
    send \"exit\n\"  
    interact "

Here is the error I get if the connection is refused ...
Code:
    spawn sftp xxx@pretendftp.site
    Connecting to pretendftp.site...
    ssh: connect to host pretendftp.site port 22: Connection refused

    Couldn't read packet: Connection reset by peer

    send: spawn id exp3 not open
        while executing
    "send "pretendpassword\r""

And out of interest, the message I get when the transfer is successful ...
Code:
    spawn sftp xxx@pretendftp.site.
    Connecting to pretendftp.site....
    xxx@pretendftp.site.'s password: 
    sftp> cd /import/nonCC/data
    sftp> put <PeopleSoft directory here>/division__20191025.txt
    Uploading <PeopleSoft directory here>/division__20191025.txt to /import/nonCC/data/division__20191025.txt

    <PeopleSoft directory here>/log_ou   0%    0     0.0KB/s   --:-- ETA
    <PeopleSoft directory here>/log_ou 100%   11KB  11.2KB/s   00:00

Anyway, I would greatly appreciate help with the script to capture the connection refused error in order to try again.

Last edited by vbe; 10-25-2019 at 02:13 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

strange expect script behavior, or am i misunderstanding expect scripting?

Hello to all...this is my first post (so please go easy). :) I feel pretty solid at expect scripting, but I'm running into an issue that I'm not able to wrap my head around. I wrote a script that is a little advanced for logging into a remote Linux machine and changing text in a file using sed.... (2 Replies)
Discussion started by: v1k0d3n
2 Replies

2. Shell Programming and Scripting

Need help with Expect script for Cisco IPS Sensors, Expect sleep and quoting

This Expect script provides expect with a list of IP addresses to Cisco IPS sensors and commands to configure Cisco IPS sensors. The user, password, IP addresses, prompt regex, etc. have been anonymized. In general this script will log into the sensors and send commands successfully but there are... (1 Reply)
Discussion started by: genewolfe
1 Replies

3. Programming

Expect script to run a Shell script on remote server

Hi All, I am using a expect script to run a shell script on remote server, the code is as follows. But the problem is that it executes only first command, and hangs it doesn't run the next commands. spawn ssh $uid@$host expect "password:" send "$password\r" expect "*\r" send... (2 Replies)
Discussion started by: yashwanthsn
2 Replies

4. Shell Programming and Scripting

Expect script help needed- script failing if router unavailable

Hey all. Sometimes I'm tasked to change some router configs for the entire network (over 3,000 Cisco routers). Most of the time its a global config parameter so its done with a loop and an IP list as its the same configuration change for all routers. This is working OK. However, sometimes an... (3 Replies)
Discussion started by: mrkz1974
3 Replies

5. Shell Programming and Scripting

Expect script to execute a script on a remote host

Hi, I am new to the expect scripting. I have this expect script as below : spawn ssh remote_server -l id set pass "12345" set opt "s" expect "Password:" {send "$pass\r" ; } expect "*ENTER*" {send "Enter\r"; exp_continue } expect "Please select option :" {send... (2 Replies)
Discussion started by: curt137
2 Replies

6. Programming

Calling expect script inside another expect

Hi, Am very new to expect scripting.. Can You please suggest me how to call an expect script inside another expect script.. I tried with spawn /usr/bin/ksh send "expect main.exp\r" expect $root_prompt and spawn /usr/bin/ksh send "main.exp\r" expect $root_prompt Both... (1 Reply)
Discussion started by: Priya Amaresh
1 Replies

7. UNIX for Advanced & Expert Users

Unable to run the script on remote machine Using Expect script

Not able to execute the file in remote host using except utility I am automating the SFTP keys setp process: So i created the expect script for controlling the output of shell below is my main code: Code: #!/usr/bin/expect set fd set password close $fd set df set app close $df... (1 Reply)
Discussion started by: Manoj Bajpai
1 Replies

8. Programming

Calling another expect script inside an expect script

I have an expect script called remote that I want to call from inside my expect script called sudoers.push, here is the code that is causing me issues: set REMOTE "/root/scripts/remote" ... log_user 1 send_user "Executing remote script as $user...\n" send_user "Command to execute is: $REMOTE... (1 Reply)
Discussion started by: brettski
1 Replies

9. Shell Programming and Scripting

SFTP or scp with password in a batch script without using SSH keys and expect script

Dear All, I have a requirement where I have to SFTP or SCP a file in a batch script. Unfortunately, the destination server setup is such that it doesn't allow for shell command line login. So, I am not able to set up SSH keys. My source server is having issues with Expect. So, unable to use... (5 Replies)
Discussion started by: ss112233
5 Replies

10. Programming

Expect script returning string following a found expect.

I'm fairly new to scripting so this might not be possible. I am using Expect with Cisco switches and need to capture the string after finding the expect request. For example, when I issue "show version" on a Nexus switch, I'm looking to capture the current firmware version: #show version ... (0 Replies)
Discussion started by: IBGaryA
0 Replies
All times are GMT -4. The time now is 10:16 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy