I have an existing expect program that is used to spawn a telnet session and automatically login a user to a server. I would like to trap certain commands to prevent users from executing those commands (passwd, etc.). I modified my program according to Don Libes "Exploring Expect" Preventing - Bad Commands example on page 347.
The command trap works, however when a user types a string, the string is echoed back on the next line - example:
guest@gumby> pwd
pwd
/export/home
Is there a way to prevent the string from echoing a new line with the command?
Here is the section of code:
set prompt ">"
set badcmds "passwd|su"
interact {
-o -reset -nobuffer -re $prompt {
while 1 {
set timeout 1800
expect_user {
-re "^badcmds.*"
{
send_user "Command not allowed...!\n"
sleep 3
break
}
-re "(.*)\n"
{
send "$expect_out(1,string)\r"
break
}
timeout {
exit
}
}
}
The command trap works, however when a user types a string, the string is echoed back on the next line - example:
guest@gumby> pwd
pwd
/export/home
Is there a way to prevent the string from echoing a new line with the command?
Here is the section of code:
set prompt ">"
set badcmds "passwd|su"
interact {
-o -reset -nobuffer -re $prompt {
while 1 {
set timeout 1800
expect_user {
-re "^badcmds.*"
{
send_user "Command not allowed...!\n"
sleep 3
break
}
-re "(.*)\n"
{
send "$expect_out(1,string)\r"
break
}
timeout {
exit
}
}
}