To send ID and Password for each command using expect feature in bash script


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers To send ID and Password for each command using expect feature in bash script
# 1  
Old 06-12-2019
To send ID and Password for each command using expect feature in bash script

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.
# 2  
Old 06-12-2019
Does your OS have the sudo command?

Putting passwords in a script is not all secure.

If you would please tell us: your OS, and your shell, we could give you a good answer - which may be an expect script.
# 3  
Old 06-12-2019
Its as follows:

NAME="Red Hat Enterprise Linux Server"
VERSION="7.3 (Maipo)"

-bash

--- Post updated at 12:38 PM ---

there is no sudo option. its the need of command to enter id password after that so must be needing such kind of solution.
# 4  
Old 06-12-2019
Okay, what is the command? A simple example would help.
# 5  
Old 06-12-2019
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. Problem with my script is that it is successfully taking id password for 101 and displaying the routing table but after that it executes the get command for 102 but doesn't takes id and password and stuck at the user name prompt.

Code:
cmcli get 101
cmcli get 102
cmcli get 103

# 6  
Old 06-12-2019
Try a here document, assumes it it asks for a user, then outputs a line feed and wants password:

Code:
#!/bin/bash
cmdcli get 101 <<!
user
pass
!
cmdcli get 102 <<!
user
pass
!
cmdcli get 103 <<!
user
pass
!

# 7  
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
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
Login or Register to Ask a Question