Sponsored Content
Top Forums Shell Programming and Scripting Using Expect for the first time Post 303025423 by dakelly on Friday 2nd of November 2018 07:54:21 AM
Old 11-02-2018
Using Expect for the first time

Hi All,

Using Linux server 18.04

Trying to understand EXPECT, so I created a script to add in new users.

The code below works without expect, and I can manually change the passwords for the new users.
However, if I use EXPECT (which is installed) to set passwords it creates the users but no passwords.

Both scripts are executable.

Code:
#!/bin/bash
#
# TP = a file with 3 usernames testa, testb & testc
# EXPECT is the expect script
TP=/home/user/test.txt
EXPECT=/home/user/exp.sh
ID=9050

while read PERSON
do
    useradd -m -d /home/$PERSON -g 1005 -u $ID -c "Test User" -s /bin/bash $PERSON
    $EXPECT
    passwd -f $PERSON
    ID=$((ID + 1))
done < "$TP"

Expect Script
Code:
#!/usr/bin/expect -f
#
# this expect script is used to set new users passwords
# the password will be forced to expire immediately after 
#
set timeout -1
spawn $env(SHELL)
expect -exact "Enter new UNIX password: "
send -- "letmein\r"
expect -exact "Retype new UNIX password: "
send -- "letmein\r"
expect eof

Output
Code:
# ./test_users.sh
": no such file or directory
passwd: password expiry information changed.
": no such file or directory
passwd: password expiry information changed.
": no such file or directory
passwd: password expiry information changed.

I take it this is something to do with expect, maybe I have not understood it correctly, maybe I am picking the wrong spawn... I am not sure, as I have never used it before, but what I have read seems I have most of it correct.

Could someone point me in the right direction?
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Long time since I used "expect"

Hello all, It's been a few years since I touched 'expect' and just got it on my system. In the past, I could simply do the following: (this is just a simple example) $ expect $ ls -l $ pwd $ exit ...then a default script name would be placed in my working directory. At this point I... (2 Replies)
Discussion started by: scriptosaurus
2 Replies

2. Shell Programming and Scripting

Expect and auto expect command

I need to run a remote application(GUI) in a client.i.e on running a script in the client machine i should get the GUI application which is running in the server by providing password through the script.Will expect or autoexpect command suit for this scenario? could anyone help me by posting some... (0 Replies)
Discussion started by: arun_v
0 Replies

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

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

5. Shell Programming and Scripting

Expect - Comparison of expect value and loop selection

Hello All, I am trying to automate an installation process using expect and sh script. My problem is that during the installation process the expected value can change according to the situation. For Example if this is a first time installation then at step 3 I'll get "Do you want to accept... (0 Replies)
Discussion started by: alokrm
0 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. Shell Programming and Scripting

Expect script to suspend expecting for a time period.

I have a simple Expect script to power a system on and off in an endless loop looking for an ERROR message at which point the script should exit. But I need to skip the first 60 seconds after each power on or off and not exit if there are ERROR messages during that time. I thought I could use... (0 Replies)
Discussion started by: David_Gilhooly
0 Replies

8. Shell Programming and Scripting

Expect script idles for a long time

the following code works sometimes. other times, it behaves mysteriously. when the script sshs to a box, it is suppose to automatically begin running the command it is told to run. but in this case, after this script logs into a host, it just sits there at the prompt and does not run the... (1 Reply)
Discussion started by: SkySmart
1 Replies

9. 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
chage(1)						      General Commands Manual							  chage(1)

NAME
chage - change user password expiry information SYNOPSIS
chage [-D binddn] [-P path] [-m mindays] [-M maxdays] [-d lastday] [-I inactive] [-E expiredate] [-W warndays] user chage -l [user] DESCRIPTION
chage is used to list and change the password expiry information of a user. It allows the system administrator to change the number of days between allowed and required password changes and the date of the last password change. It allows also to define when an account will expire. The chage command is restricted to the system administrator, except for the -l option, which may be used by an user to determine when his password or account is due to expire. If no option is given, chage operates in an interactive mode, prompting the user with the current values for all of the fields. Enter the new value to change the field, or leave the line blank to use the current value. If the users exists in the local passwd file, but not in the local shadow file, chage will create a new entry in the shadow file. OPTIONS
-D, --binddn binddn Use the Distinguished Name binddn to bind to the LDAP directory. The user will be prompted for a password for simple authentica- tion. -P, --path path The passwd and shadow files are located below the specified directory path. chage will use this files, not /etc/passwd and /etc/shadow. This is useful for example on NIS master servers, where you do not want to give all users in the NIS database auto- matic access to your NIS server and the NIS map is build from special files. -l, --list This option will list the password expiry information in a human readable format. The user will see the date when he changed the password the last time, when the password will be expire, when the password will be locked and when the account will expire. -m, --mindays mindays With this option the minimum number of days between password changes is changed. A value of zero for this field indicates that the user may change her password at any time. Else the user will not be permitted to change the password until min days have elapsed. -M, --maxdays maxdays With this option the maximum number of days during which a password is valid is changed. When maxdays plus lastday is less than the current day, the user will be required to change his password before being able to use the account. -d, --lastday lastday With this option the date when the password was last changed can be set to another value. lastday has to be specified as number of days since January 1st, 1970. The date may also be expressed in the format YYYY-MM-DD. If supported by the system, a value of zero forces the user to change the password at next login. -E, --expiredate expiredate With this option the date when the account will be expired can be changed. expiredate has to be specified as number of days since January 1st, 1970. The date may also be expressed in the format YYYY-MM-DD. -I, --inactive inactive This option is used to set the number of days of inactivity after a password has expired before the account is locked. A user whose account is locked must contact the system administrator before being able to use the account again. A value of -1 disables this feature. -W, --warndays warndays With this option the number of days of warning before a password change is required can be changed. This option is the number of days prior to the password expiring that a user will be warned the password is about to expire. FILES
passwd - user account information shadow - shadow user account information SEE ALSO
passwd(1), passwd(5) AUTHOR
Thorsten Kukuk <kukuk@suse.de> pwdutils November 2005 chage(1)
All times are GMT -4. The time now is 02:19 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy