Sponsored Content
Top Forums UNIX for Beginners Questions & Answers To send ID and Password for each command using expect feature in bash script Post 303036019 by bakunin on Wednesday 12th of June 2019 01:48:03 PM
Old 06-12-2019
Quote:
Originally Posted by Xtreme
Dear Tech Guys,

I am trying to send some commands on the local server and it always asks for user name and password after each command. To serve the purpose I am using expect function as follows:

Code:
#!/usr/bin/expect

set timeout 20



spawn "./data1.sh"

expect "Please Enter UserName: " { send "admin\r" }
expect "*Password: " { send "admin123\r" }

interact

where data1.sh have the say:

Code:
#!/bin/bash
command1
command2
command3

Now the problem is that, my expect script provides username and password for only command1 but not providing username and password for command2 onwards and stops at the username prompt. Please help me out to troubleshoot this issue.
Quote:
Originally Posted by Xtreme
Its an application based command which shows the routing table just as below. After each such get command it asks for the user id and password.
Code:
cmcli get 101
cmcli get 102
cmcli get 103

If i connect that correctly, a command like:

Code:
cmcli get 101

asks itself for a user/password. Your expect-script provides that only once, not for every command. My suggestion is to do it the other way round. Put the following in a script "execasadmin.exp":

Code:
#!/usr/bin/expect
set timeout 20
set mycmd [lindex $argv 0];

spawn $mycmd

expect "Please Enter UserName: " { send "admin\r" }
expect "*Password: " { send "admin123\r" }

interact

This will expect a command line as argument, execute this commandline, then feed it the user and password. Call this in a loop like this:

Code:
#! /bin/bash

mycmdarr[1]="command1"
mycmdarr[2]="command2"
mycmdarr[3]="command3"
mycmdarr[4]="command4"
# [...]
i=1

while [ $i -le ${#mycmdarr[@]} ] ; do
     /path/to/execasadmin.exp "${mycmdarr[$i]}"
     (( i++ ))
done

exit 0

Notice that there might be difficulties once you include redirections, pipelines and other advanced shell features into your commands, but for single/simple commands it should work.

I hope this helps.

bakunin
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Use Send command of Expect package

HI All, I am currently working on one command line application on AIX (Unix Platform).Here i need to use Expect package. By using Expect package at the top of the script,i want to use just Send command of Expect package to send characters like, 1. Press Enter key 2. Press spacebar 3.... (6 Replies)
Discussion started by: neha123
6 Replies

2. Shell Programming and Scripting

Is there a way to ask expect wait for sometime before running the next send command ?

Hi all, After expect catches the string I specify, is there a way to ask expect wait for sometime before running the next send command ? So my script looks like following, expect "some string" #How to ask expect to wait for a while send "next command" The reason I want to do this is... (0 Replies)
Discussion started by: qiulang
0 Replies

3. Shell Programming and Scripting

within shell script send expect and if else

Hi I have written one shell script , using that i am able to connect to remote machine but i have to #!/usr/bin/expect -f set address set username set password set OOLpath set dbusername set dbpasswd set tnsname set recdbusername set recdbpasswd set rectnsname spawn ssh... (1 Reply)
Discussion started by: mnmonu
1 Replies

4. Shell Programming and Scripting

Command substitution in send/expect. Please help!

Hi, the following code is not working. How can I cat the last modified file in the path /asdf. Please help! expect "asdf%" {send "cat `ls -rt /asdf|tail -1` \r"} (2 Replies)
Discussion started by: thulasidharan2k
2 Replies

5. AIX

Send ctrl+C in expect script

Hi, Am trying to transfer file via FTP using expect script from server to client i need to interrupt the file transfer between server and client Please help what should used in expect code.. I used send "ctrl+c\r" expect "Aborted" but that didnt work.. I need what should... (3 Replies)
Discussion started by: Priya Amaresh
3 Replies

6. Shell Programming and Scripting

Make a password protected bash script resist/refuse “bash -x” when the password is given

I want to give my long scripts to customer. The customer must not be able to read the scripts even if he has the password. The following command locks and unlocks the script but the set +x is simply ignored. The code: read -p 'Script: ' S && C=$S.crypt H='eval "$((dd if=$0 bs=1 skip=//|gpg... (7 Replies)
Discussion started by: frad
7 Replies

7. Shell Programming and Scripting

Bash Script: Send files to SFTP using Expect

I have to send few gzipped files from local server to SFTP server. My Server Info Distributor ID: Ubuntu Description: Ubuntu 12.04.4 LTS Release: 12.04 Codename: precise Created a bash script and could able to send files to sftp, but i want to send email if transfer is successful. ... (1 Reply)
Discussion started by: krux_rap
1 Replies

8. Shell Programming and Scripting

How to use expect and send command in UNIX/Linux?

Hello Everyone, I am executing a unix script which logs into 50+ servers (netapp servers) and runs some commands and captures output locally. Below is the code snippet. file1.txt has names of all the remote servers where I am logging in. #!/bin/ksh #!/usr/bin/expect touch... (1 Reply)
Discussion started by: rahul2662
1 Replies

9. Shell Programming and Scripting

Password check in bash script calling on expect

password check in bash script calling on expect Background: I have to copy a file from one server, to over 100 servers in a test environment. once the file is copied, it requires to have the permissions on the file changed/verified. These are all linux servers. most of them have the same... (1 Reply)
Discussion started by: 2legit2quit
1 Replies

10. Shell Programming and Scripting

Expect command to send the user input enter or ctrl+c

Hey All, I am writing one script using expect, that script which is used in spawn will accepts only 1. Enter 2. Ctrl+c Press Control-C to exit, Enter to proceed. Could some one share some thoughts to send the above user inputs in linux expect block ? Thanks, Sam (0 Replies)
Discussion started by: SCHITIMA
0 Replies
All times are GMT -4. The time now is 06:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy