配置Ubuntu的小脚本
发表于 : 2010-12-29 20:22
代码: 全选
#!/bin/sh
if [ "$HOME" = "/root" ];then
echo 不能在root下执行哦
exit 0
fi
echo 这个脚本需要用到sudo,请输入密码
sudo echo ''
cd $HOME
CURRENT_TIME=`date -d today +"%Y%m%d%H%M"`
get_reg_string()
{
echo "$1" | sed -e 's/\//\\\//g' -e 's/\./\\\./g'
}
HOME_REG=`get_reg_string $HOME`
echo 初始化...
BAK_DIR="$HOME/.init_config_bak"
echo 创建备份目录$BAK_DIR
mkdir $BAK_DIR 2> /dev/null
echo 安装本脚本依赖文件
sudo apt-get install -y dialog
#############################################################
if dialog --title "选择更新源" --radiolist "更新源:" 20 60 4 \
"mirrors.163.com" "网易镜像" on \
"mirrors.sohu.com" "搜狐镜像" off \
2> /tmp/select
then
echo ''
mirror=`cat /tmp/select`
echo 软件原列表备份至 $BAK_DIR/sources.list.$CURRENT_TIME
cp /etc/apt/sources.list $BAK_DIR/sources.list.$CURRENT_TIME
echo 使用新的软件源
sudo sed -i "s/\(\(en\|us\|cn\)\.\)\?archive.ubuntu.com/${mirror}/g" /etc/apt/sources.list
#####apt-get update
else
echo ''
fi
#############################################################
echo ''
echo --------------------------------------
echo 安装常用软件
echo 编辑器 : gawk,vim
echo 软件包管理: aptitude
echo 媒体软件 : smplayer mp3,wma解码器
echo 办公软件 : chmsee
echo win共享网络:samaba
echo --------------------------------------
sudo apt-get install -y gawk vim \
aptitude \
flashplugin-installer \
smplayer \
gstreamer0.10-ffmpeg \
gstreamer0.10-fluendo-mp3 \
gstreamer0.10-plugins-ugly \
chmsee \
samba \
system-config-samba
#############################################################
echo ''
echo 解压需要的资源
sed "1,/DONGGANCHAORE\(\)N/d" $0 > /tmp/ubuntu_init_shell.zip
TMP_SRC_DIR=/tmp/ubuntu_init
mkdir $TMP_SRC_DIR
unzip -o -d $TMP_SRC_DIR /tmp/ubuntu_init_shell.zip
TMP_SRC_DIR="$TMP_SRC_DIR/var"
#############################################################
echo ''
echo --------------------------------------
echo 设置smplayer字幕,添加文件关联
echo --------------------------------------
if test ! -f "$HOME/.config/smplayer/smplayer.ini";then
smplayer >/dev/null &
sleep 3
killall smplayer
fi
cp $HOME/.config/smplayer/smplayer.ini $BAK_DIR/smplayer.ini.$CURRENT_TIME
echo smplayer配置已备份到$BAK_DIR/smplayer.ini.$CURRENT_TIME
sed -i -e "s/subcp=ISO-8859-1/subcp=UTF-8/" \
-e "s/use_enca=false/use_enca=true/" \
-e 's/fontname=Arial/fontname=\\x6587\\x6cc9\\x9a7f\\x5fae\\x7c73\\x9ed1/g' $HOME/.config/smplayer/smplayer.ini
mimelist="$HOME/.local/share/applications/mimeapps.list"
if test ! -f $mimelist;then
echo '[Added Associations]' > $mimelist
fi
if test -z "`grep 'Added Associations' $mimelist`"
then
echo '[Added Associations]' >> $mimelist
fi
if test -z "`grep 'smplayer' $mimelist`"
then
sed -i "/[Added Associations]/r${TMP_SRC_DIR}/smplayer_mime" $mimelist
fi
#############################################################
echo ''
echo --------------------------------------
echo 修正:用flash播放视频时禁用屏幕保护程序
echo --------------------------------------
mkdir $HOME/.init_shell 2> /dev/null
cp $TMP_SRC_DIR/stop_screensaver_for_flash.sh $HOME/.init_shell
cp $TMP_SRC_DIR/stop_screensaver_for_flash.desktop $HOME/.config/autostart
sed -i "s/HOME/$HOME_REG/g" $HOME/.config/autostart/stop_screensaver_for_flash.desktop
#############################################################
echo ''
echo -------------------------------------
echo 设置firefox
echo 默认不显示书签栏
echo -------------------------------------
FIREFOX_DIR=`find $HOME/.mozilla/ -type d -name "*.default"|head -n 1`
if test -z "$FIREFOX_DIR";then
firefox &
sleep 3
killall firefox-bin
FIREFOX_DIR=`find $HOME/.mozilla/ -type d -name "*.default"|head -n 1`
fi
cp $FIREFOX_DIR/localstore.rdf $BAK_DIR/localstore.rdf.$CURRENT_TIME
echo firefox配置已备份到$BAK_DIR/localstore.rdf.$CURRENT_TIME
cp $TMP_SRC_DIR/localstore.rdf $FIREFOX_DIR
#############################################################
echo ''
echo ------------------------------------
echo 用pidgin代替empathy
echo ------------------------------------
sudo apt-get remove -y empathy empathy-common nautilus-sendto-empathy
sudo apt-get install -y pidgin
echo ''
echo -----------------------------------
echo 删掉gwibber,不能用代理的玩具。。
echo -----------------------------------
sudo apt-get remove -y gwibber gwibber-service
#############################################################
echo ''
echo -----------------------------------
echo 安装gappproxy
echo -----------------------------------
config_gappproxy()
{
rm /tmp/dialog_input
if dialog --title "设置Gappproxy" --inputbox "设置一个fetch server" 10 75 2>/tmp/dialog_input
then
echo ''
url=`cat /tmp/dialog_input`
if test -n "$url";then
if test -n "`wget $url -O - 2>/dev/null | grep GAppProxy/2.0.0`";then
echo "fetch_server = $url" >> $HOME/.gappproxy/localproxy-2.0.0/proxy.conf
else
echo "输入的fetchserver不可用,需要一个安装gappproxy2.0.0的fetchserver"
sleep 3
config_gappproxy
fi
fi
else
echo ''
fi
}
install_gappproxy()
{
mkdir $HOME/.gappproxy
cd $HOME/.gappproxy
wget http://gappproxy.googlecode.com/files/localproxy-2.0.0.tar.gz
tar zxvf *.tar.gz
cp $TMP_SRC_DIR/gappproxy.desktop $HOME/.config/autostart/
sed -i "s/HOME/$HOME_REG/g" $HOME/.config/autostart/gappproxy.desktop
rm *.tar.gz
config_gappproxy
cd $HOME
}
if test ! -f "$HOME/.gappproxy"
then
install_gappproxy
fi
#############################################################
echo ''
echo -----------------------------------
echo 安装sshd
echo -----------------------------------
sudo apt-get install -y ssh
if test -n "`cat /etc/ssh/sshd_config|grep 'Port 22'`"
then
if dialog --title "更改ssh端口" --inputbox "建议不要使用默认的22端口~" 10 75 22 2>/tmp/dialog_input
then
echo ''
newport=`cat /tmp/dialog_input`
if [ "$newport" != "22" ];then
cp /etc/ssh/sshd_config $BAK_DIR/sshd_config.$CURRENT_TIME
echo ssh server配置已备份到$BAK_DIR/sshd_config.$CURRENT_TIME
sudo sed -i "s/Port 22/Port ${newport}/g" /etc/ssh/sshd_config
sudo service ssh restart
fi
else
echo ''
fi
fi
#############################################################
echo ''
echo -----------------------------------
echo 系统时间与网络同步
echo -----------------------------------
sudo apt-get install -y ntp
if test -z "`cat /etc/ntp.conf|grep 210.72.145.44`"
then
sudo sed -i '$aserver 210.72.145.44' /etc/ntp.conf
fi
exit 0
#DONGGANCHAOREN#
执行权限我指的是你生成的那个AutoConf.autoscripter,我以为你是为了方便用户在多台机器上配置。gjp1120 写了: 2.关于生成安装脚本,这个是深思熟虑过的,因为我想把所有的过程放在一起执行,减少交互时间。
3.关于为什么要使用多次apt-get update,这个已经在其中注释中指出,不愿让用户不小心升级到不稳定版本,而我还不会在命令行中删除某个源。(这个比较寒)
9.关于执行权限,这个,自己chmod +x就行吧,我是直接上传的脚本,下载下来后没有执行权限是正常的阿。
代码: 全选
sudo apt-get update
sudo add-apt-repository XXX
sudo apt-get update
....
代码: 全选
PKG=""
REPO=""
if 用户要安装软件a ;then
PKG= "$PKG a"
fi
if 用户要安装ppa源中的软件b ;then
REPO="add-apt-repository ppa:B"
PKG= "$PKG b"
fi
if 用户要安装ppa源中的软件c ;then
REPO="$REPO; add-apt-repository ppa:C"
PKG= "$PKG c"
fi
...
if [ -n "$REPO" ];then
$REPO
fi
if [ 用户要更新源 -o -n "$REPO" ];then
sudo apt-get update
fi
if [ -n "$PKG" ];then
sudo apt-get install $PKG
fi
这个你该看看包的具体依赖情况,比如emacs的目前是emacs23 | emacs23-lucid | emacs23-nox,会优先装emacs23,当emacs23和emacs23-lucid都不行时才会去装emacs23-noxgjp1120 写了:5.软件包的版本号,这个问题我也想过,可我担心为某些用户误装了命令行版的。
代码: 全选
if zenity --question --text "要安装XX吗?"; then echo Y;fi
if whiptail --yesno "要安装XX吗?" 10 30;then echo Y;fi
我写了那么一段示例代码你都没看,还是看不懂?我那样写不管用户怎么选最多都只执行一次update,效率最高。gjp1120 写了:关于您说的,
1.万一用户不执行更新ibus呢?而且apt-get update第二次执行较快。
可能是你系统的python-software-properties比较旧。0.76以及之后的版本中才有这个参数。你用lucid的话就很遗憾了,只有手动去删除公钥和list文件gjp1120 写了: 2.在我计算机上apt-add-repository 的-r参数无效,man没有apt-add-repository的手册,--help和-h没有什么帮助。