我有一个要点,我总是用它来在新服务器上安装我需要的软件包。
http://gist.github.com/4372049
我需要做的就是通过ssh
在新服务器中输入以下内容bash -c "$(curl -fsSL https://raw.github.com/gist/4372049)" <mysqlPassword>
我会很高兴。
现在我有了一系列的步骤,我总是需要在全新安装的ubuntu上执行。
first at root i did a
echo $SHELL
I saw that I have /bin/bash
then i switch to www-data
sudo su www-data
then i do a
echo $SHELL
I saw that I had
/bin/sh
instead.
So I did a
chsh -s /bin/bash
I was prompted for my www-data password so I gave it.
Password:
after that I switch back to root
exit
then i log back into www-data
sudo su www-data
I checked the $SHELL again
echo $SHELL
I saw that now it is
/bin/bash
在https://askubuntu.com/a/232663/10591
中列出有没有办法编写一个bash脚本,我可以在gist.github.com中以类似的方式使用它来执行?
如果是这样,我该如何编写bash脚本?
更新
我意识到我被投票决定关闭这个问题,因为它被认为太局部化了。
让我重新说一下
我如何编写一个bash脚本,我可以在gist中添加并在我的linux控制台中使用它,以便它可以接受用户名和密码的参数,从而执行命令
chsh -s /bin/bash
并正确提供密码?
这是我的尝试:https://gist.github.com/simkimsia/5126919
su工作,但不是chsh命令
更新2:
我已将脚本更改为
EXPECTEDARGS=1
if [ $# -ne $EXPECTEDARGS -o "x$0" == "x" -o $0 == "bash" ]; then
echo "Usage:"
echo " Parameter 1: your username"
echo " Parameter 2: your password"
exit 1
fi
CHANGESHELL_FOR_USER=$0
PASSWORD_OF_USER=$1
########################################
## switch to another user
## read this https://stackoverflow.com/a/1988255/80353
########################################
sudo -u $CHANGESHELL_FOR_USER -H sh -c "chsh -s /bin/bash"
expect "*?assword:*" {send -- "$PASSWORD_OF_USER\r";}
expect eof
阅读how to use a shell script to supply a password when the interface asks for it
后和
https://stackoverflow.com/a/1988255/80353
现在问题是在提示
时以某种方式发送密码Password:
答案 0 :(得分:1)
只要您以root身份运行以下命令,就可以了。
chsh -s /bin/bash <username>
在这种情况下,它是
chsh -s /bin/bash www-data
请参阅https://gist.github.com/simkimsia/4372049#file-installation-12-10-ubuntu-sh-L373