用于安装软件和配置网络的 Shell 脚本

用于安装软件和配置网络的 Shell 脚本

嘿,我想知道,在全新安装 Ubuntu 后,如何使用 shell 脚本安装所有必需的软件(vlc、apache、MySQL、PHP、java、Netbeans 等)。

我还希望使用相同的 shell 脚本来配置我的静态网络 IP,包括 IPv4 的地址、网关、网络掩码和 DNS 服务器 IP...可以吗?

并非不可能,对吧?

答案1

我大约一周前就这样做了,因为我的 SSD 坏了,我不得不使用 LiveCD,而且我不想重复这些步骤:

我使用的变量应该是解释性的:

ifconfig eth0 $address netmask $netmask
ip route add default via $gateway
echo "nameserver $dns_server" > /etc/resolv.conf

这假设脚本将以 root 身份运行。如果不是,您需要sudo在前两个命令前面添加,并>在第三个命令中替换为| sudo tee。请注意,这些命令绕过了网络管理器,但对我来说有效。YMMV

要安装程序,你可以使用 apt:

apt-get install vlc apache2 mysql-server php5 [other packages here]

接下来是从我在 LiveCD 上安装软件的代码中检索到的(将通过 sudo 请求 root 权限):

try_install_yes_to_all=false
try_install () {
    # Usage: try_install 'apt_options' package1 package2 ... packageN
    # You'll be prompted whether you want to install a (set of) package(s) or not
    # Y=Yes, N=No, A=All (do not ask in future)
    local opts="$1"
    shift
    if [ $(dpkg -l "$@" 2>/dev/null | grep '^ii' | wc -l) != $# ]; then
        while true; do
            $try_install_yes_to_all || printf 'install %s ? [Y/N/A] ' "$*"
            $try_install_yes_to_all && yn=Y || read yn
            case "$yn" in
                [YyAa])
                    [[ $yn == [Aa] ]] && try_install_yes_to_all=true
                    sudo apt-get install -y $opts "$@"
                    break
                    ;;
                [Nn])
                    break
                    ;;
            esac
        done
    fi
}
# install language packs
try_install '' language-pack-kde-nl language-support-nl
# install Firefox without "Recommended:" packages (like firefox-globalmenu)
try_install '--no-install-recommends' firefox

因为某些软件包需要重新登录(语言包),所以我通过在内核选项中添加下一行来编辑启动选项:

init=/bin/bash

modprobe usb-storage这将加载 shell,而不是执行正常启动。使用这个 shell,如果装有脚本的 USB 记忆棒未插入系统,则可能需要运行。

接下来,挂载包含脚本的分区并运行它:

mount /dev/sdc1 /mnt
/mnt/script-to-run

请注意,您不能使用Ctrl+C或文件描述符。如果您需要终止包括脚本在内的所有程序,请发出Alt+ SysRq+E快捷方式。如果脚本仍在运行,请使用 Alt+ SysRq+强制终止所有进程i

脚本完成后,卸载分区:

umount /mnt

要继续正常启动,请运行:

exec init

答案2

要从命令行使用您的网络连接,您可以使用 NetworkManager 命令行界面 (cnetworkmanager) 包:

封装信息:http://packages.ubuntu.com/natty/cnetworkmanager

使用信息:http://vidner.net/martin/software/cnetworkmanager/

连接到名为 YOURSSID 的网络的示例调用:

cnetworkmanager --connect=YOURSSID

至于从命令行安装软件,您可以使用 apt-get 和 apt-cache 命令来完成。首先,您需要找到要安装的确切软件包名称(通常包括您列出的服务的版本号)。您可以使用 apt-cache search 来查找这些。例如:

apt-cache search apache

查看这些结果并找到软件包名称后,您可以使用 apt-get 安装它们:

apt-get install vlc apache mysql etc

相关内容