如何通过写shell自动切换到root 用户
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过写shell自动切换到root 用户相关的知识,希望对你有一定的参考价值。
参考技术A 不要写成 bash 脚本,直接写 expect 脚本就行了。#!/usr/bin/env expect
spawn su -
expect ":"
send "redhat\r"
interact本回答被提问者采纳 参考技术B 除非你知道密码,要不然没用。
shell中调用expect 我编写了一个普通用户切换到root的脚本。
#!/bin/bash
expect <<!
spawn su -
expect ":"
send "redhat\r"
expect eof
!
能够实现从普通用户切换到root,但问题是切换过去后系统5秒钟后自动又从root切换到原先的普通用户了。这是为什么,怎么解决呢???
# expect -c \'
spawn su -
expect ":"
send "passwdXXXX\\n"
interact
\'
你这种想法也算不上托裤子放屁,既然expect 提供了 -c 选项,就说名直接在bash 中调用expect 的大有人在。 参考技术A #!/bin/bash
expect <<!
spawn su -
expect ":"
send "redhat\r"
expect eof
interact
wait
!追问
还是不行,还是那样有问题。
参考技术B 不要写成 bash 脚本,直接写 expect 脚本就行了。#!/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不退出。但是,这显然多此一举。
以上是关于如何通过写shell自动切换到root 用户的主要内容,如果未能解决你的问题,请参考以下文章
shell中调用expect 我编写了一个普通用户切换到root的脚本。