MLS*_*LSC 3 linux sudo bash login su
这是我的简单 bash:
cat test.sh
#!/bin/bash
echo "hello"
su - root -c /path/to/script.sh <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
./test.sh
hello
su: must be run from a terminal
<current-user>
good bye
Run Code Online (Sandbox Code Playgroud)
(或者)
cat test2.sh
#!/bin/bash
echo "hello"
sudo su <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
又一个错误
(或者)
cat test3.sh
#!/bin/bash
echo "hello"
su root <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
又是错误...
当我尝试:
#!/bin/bash
echo "hello"
sudo -s <<EOF
<password>
echo Now I am root
id
echo "yes!"
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
然后输出是:
./script.sh
hello
[sudo] password for <user>:
Run Code Online (Sandbox Code Playgroud)
我还将我的脚本更改为:
#!/usr/bin/expect -f
spawn sudo -s <<EOF
expect "assword for user:"
send -- "password\r"
expect eof
Run Code Online (Sandbox Code Playgroud)
和输出是:
spawn sudo -s <<EOF
[sudo] password for user:
/bin/bash: <<EOF: command not found
Run Code Online (Sandbox Code Playgroud)
同时which sh输出/bin/sh
如何解决这三个脚本中的错误?
有很多方法可以做到这一点......这里有一些:
以该用户身份登录:实际上,
用户 2
或者只是获得相同的环境,
su -l user2
Run Code Online (Sandbox Code Playgroud)
以该用户身份执行单个命令:
su user2 -c cat myfile.txt
在这里使用文档:
sudo su user <<EOF
command1
command2
.....
EOF
您的命令可能会失败,因为 /tmp/script.sh 不可执行,或者 one.sh 中的最后一个 echo 没有匹配的顶点 ( ")。
| 归档时间: |
|
| 查看次数: |
19261 次 |
| 最近记录: |