shell中调用expect 我编写了一个普通用户切换到root的脚本。
#!/bin/bashexpect<<!spawnsu-expect":"send"redhat\r"expecteof!能够实现从普通用户切换到root,但问题是切换过...
#!/bin/bash
expect <<!
spawn su -
expect ":"
send "redhat\r"
expect eof
!
能够实现从普通用户切换到root,但问题是切换过去后系统5秒钟后自动又从root切换到原先的普通用户了。这是为什么,怎么解决呢??? 展开
expect <<!
spawn su -
expect ":"
send "redhat\r"
expect eof
!
能够实现从普通用户切换到root,但问题是切换过去后系统5秒钟后自动又从root切换到原先的普通用户了。这是为什么,怎么解决呢??? 展开
3个回答
展开全部
#!/bin/bash
expect <<!
spawn su -
expect ":"
send "redhat\r"
expect eof
interact
wait
!
expect <<!
spawn su -
expect ":"
send "redhat\r"
expect eof
interact
wait
!
追问
还是不行,还是那样有问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不要写成 bash 脚本,直接写 expect 脚本就行了。
#!/usr/bin/env expect
spawn su -
expect ":" {
send "redhat\r"
}
interact
#!/usr/bin/env expect
spawn su -
expect ":" {
send "redhat\r"
}
interact
追问
哦,这种可以我试过的,我是想在#!/bin/bash中调用expert来实现。但是始终有问题,不过还是很谢谢你了。
追答
首先,你这种想法就是脱裤子放屁。
其次,如果一定要在bash脚本中调用 expect, 那也不能用 here document,在 here document 最后一行bash会关闭expect的输入,导致 expect 需要读取输入时 (interact 语句),发现输入文件已经结束,就会退出。可以把下面的内容存入文件,比如 a.exp 中
spawn su -
expect ":" {
send "redhat\r"
}
interact
然后在 bash 脚本中
#!/bin/bash
expect a.exp
这样就能在 bash 中调用 expect 并保持 su - 的session不退出。但是,这显然多此一举。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询