我在使用
在下面的代码中:
- 第1个
sudo -S
、bash -c
和EOF
进行认证时遇到了问题。在下面的代码中:
- 第1个
sudo
是OK的。
- 第2个sudo
身份验证已通过,但输出结果与预期不符。
- 第3个sudo
身份验证已通过,但输出结果与预期不符。
- 第4个sudo
身份验证已通过,但似乎无法写入文件。
- 第5个sudo
无法进行身份验证。#!/bin/bash
pass="my_pass\n"
#echo -e $pass
ssh -T my_user@my_server << EOF
whoami
pwd
echo $HOSTNAME
(sleep 3; echo -e $pass; sleep 3) | sudo -S -u batchuser whoami
(sleep 3; echo -e $pass; sleep 3) | sudo -S -H -u batchuser bash -c "pwd"
(sleep 3; echo -e $pass; sleep 3) | sudo -S -u batchuser bash -c "echo $HOSTNAME"
(sleep 3; echo -e $pass; sleep 3) | sudo -S -u batchuser bash -c "touch test"
(sleep 3; echo -e $pass; sleep 3) | sudo -S -u batchuser bash -c << TEST1
sleep 10; echo -e $pass; sleep 3
whoami
pwd
TEST1
EOF
输出:
my_user@my_pc> ./test_ssh.sh
my_user@my_server's password: <-- I wrote the password here
my_user
/home/my_user
my_pc <-- It's not 'my_server'
Mot de passe de my_user: batchuser
Mot de passe de my_user: /home/my_user <-- It's not '/home/batchuser'
Mot de passe de my_user: my_pc <-- It's not 'my_server'
Mot de passe de I86671: touch: cannot touch `test': Permission denied
Mot de passe de my_user: Sorry, try again.
Mot de passe de my_user: Sorry, try again.
Mot de passe de my_user: Sorry, try again.
sudo: 3 incorrect password attempts
my_user@my_pc>
你知道我怎样可以使用EOF
传递密码吗?
同时为什么bash -c
的输出结果不是预期的呢?