Skip to main content
We’ve updated our Terms of Service. A new AI Addendum clarifies how Stack Overflow utilizes AI interactions.
added 48 characters in body
Source Link

This is my expect script for login into a remote server.where i ask user to put password.

#!/usr/bin/expect -f #Grabbing Password to be used in script further stty -echo send_user -- "Enter the Password: " expect_user -re "(.*)\n" send_user "\n" stty echo set pass $expect_out(1,string) #Loggin into the Gateway as Normal user #spawn ssh HOSTNAME@$ip spawn -noecho ssh -o StrictHostKeyChecking=No HOSTNAME@$ip expect "HOSTNAME@IP's password:" send "$pass\n" #Loggin in as root user send "$ROOT\r" expect -exact "Password:*" send "$pass\r" 

Now,below is my bash script to add user.

#Script to Add User chattr -i /etc/passwd  read -p 'Please Enter The Username To Add: ' name echo "$name" > /tmp/userlist.txt clear echo -e "Hello $name\nYour Name Is Added To The List." userfile=/tmp/userlist.txt username=$(cat /tmp/userlist.txt | tr 'A-Z' 'a-z') for user in $username do useradd $user -N -s /bin/bash usermod -aG sudo $user passwd $user chattr +i /etc/passwd 

Now what happens is that expect script i can run from my local machine to login into the remote machine and do stuffs like checking the ram usage n all.

But to add user i want to copy the bash script on remote machine and then run the script. MY QUESTION IS HOW CAN I USE BASH SCRIPT IN EXPECT SO THAT ILL ALWAYS USE THE EXPECT TO LOGIN INTO THE REMOTE MACHINE AND RUN SCRIPTS.

This is my expect script for login into a remote server.where i ask user to put password.

#!/usr/bin/expect -f #Grabbing Password to be used in script further stty -echo send_user -- "Enter the Password: " expect_user -re "(.*)\n" send_user "\n" stty echo set pass $expect_out(1,string) #Loggin into the Gateway as Normal user #spawn ssh HOSTNAME@$ip spawn -noecho ssh -o StrictHostKeyChecking=No HOSTNAME@$ip expect "HOSTNAME@IP's password:" send "$pass\n" #Loggin in as root user send "$ROOT\r" expect -exact "Password:*" send "$pass\r" 

Now,below is my bash script to add user.

#Script to Add User read -p 'Please Enter The Username To Add: ' name echo "$name" > /tmp/userlist.txt clear echo -e "Hello $name\nYour Name Is Added To The List." userfile=/tmp/userlist.txt username=$(cat /tmp/userlist.txt | tr 'A-Z' 'a-z') for user in $username do useradd $user -N -s /bin/bash usermod -aG sudo $user passwd $user 

Now what happens is that expect script i can run from my local machine to login into the remote machine and do stuffs like checking the ram usage n all.

But to add user i want to copy the bash script on remote machine and then run the script. MY QUESTION IS HOW CAN I USE BASH SCRIPT IN EXPECT SO THAT ILL ALWAYS USE THE EXPECT TO LOGIN INTO THE REMOTE MACHINE AND RUN SCRIPTS.

This is my expect script for login into a remote server.where i ask user to put password.

#!/usr/bin/expect -f #Grabbing Password to be used in script further stty -echo send_user -- "Enter the Password: " expect_user -re "(.*)\n" send_user "\n" stty echo set pass $expect_out(1,string) #Loggin into the Gateway as Normal user #spawn ssh HOSTNAME@$ip spawn -noecho ssh -o StrictHostKeyChecking=No HOSTNAME@$ip expect "HOSTNAME@IP's password:" send "$pass\n" #Loggin in as root user send "$ROOT\r" expect -exact "Password:*" send "$pass\r" 

Now,below is my bash script to add user.

#Script to Add User chattr -i /etc/passwd  read -p 'Please Enter The Username To Add: ' name echo "$name" > /tmp/userlist.txt clear echo -e "Hello $name\nYour Name Is Added To The List." userfile=/tmp/userlist.txt username=$(cat /tmp/userlist.txt | tr 'A-Z' 'a-z') for user in $username do useradd $user -N -s /bin/bash usermod -aG sudo $user passwd $user chattr +i /etc/passwd 

Now what happens is that expect script i can run from my local machine to login into the remote machine and do stuffs like checking the ram usage n all.

But to add user i want to copy the bash script on remote machine and then run the script. MY QUESTION IS HOW CAN I USE BASH SCRIPT IN EXPECT SO THAT ILL ALWAYS USE THE EXPECT TO LOGIN INTO THE REMOTE MACHINE AND RUN SCRIPTS.

Source Link

Merging Expect script and Bash script

This is my expect script for login into a remote server.where i ask user to put password.

#!/usr/bin/expect -f #Grabbing Password to be used in script further stty -echo send_user -- "Enter the Password: " expect_user -re "(.*)\n" send_user "\n" stty echo set pass $expect_out(1,string) #Loggin into the Gateway as Normal user #spawn ssh HOSTNAME@$ip spawn -noecho ssh -o StrictHostKeyChecking=No HOSTNAME@$ip expect "HOSTNAME@IP's password:" send "$pass\n" #Loggin in as root user send "$ROOT\r" expect -exact "Password:*" send "$pass\r" 

Now,below is my bash script to add user.

#Script to Add User read -p 'Please Enter The Username To Add: ' name echo "$name" > /tmp/userlist.txt clear echo -e "Hello $name\nYour Name Is Added To The List." userfile=/tmp/userlist.txt username=$(cat /tmp/userlist.txt | tr 'A-Z' 'a-z') for user in $username do useradd $user -N -s /bin/bash usermod -aG sudo $user passwd $user 

Now what happens is that expect script i can run from my local machine to login into the remote machine and do stuffs like checking the ram usage n all.

But to add user i want to copy the bash script on remote machine and then run the script. MY QUESTION IS HOW CAN I USE BASH SCRIPT IN EXPECT SO THAT ILL ALWAYS USE THE EXPECT TO LOGIN INTO THE REMOTE MACHINE AND RUN SCRIPTS.