关于ubuntu的ks.cfg脚本
ubuntu吧
全部回复
仅看楼主
level 2
%post后面,写了获取静态IP,DNSIP,更改登陆密码
但是只执行了更改密码,远程上去后,脚本代码原封不动的输入执行,则全部可行
纠结了很久,有大佬指点一下么?原代码贴2楼
2018年02月01日 01点02分 1
level 2
因为排版好像有的问题,大佬们将就一下
%post
sudo echo 'begin' >/tmp/step.txt
chmod +w /etc/default/grub
因为使用的16.04的系统,所以得改下/etc/default/grub才能进系统
sudo sed -i 's@GRUB_CMDLINE_LINUX_DEFAULT@\#GRUB_CMDLINE_LINUX_DEFAULT@' /etc/default/grub
sudo sed -i 's@GRUB_CMDLINE_LINUX=""@GRUB_CMDLINE_LINUX="text"@' /etc/default/grub
update-grub
sudo echo 'allow root login'>>/tmp/step.txt
允许root登陆
if [ `cat /etc/ssh/sshd_config |grep -v "#"|grep "PermitRootLogin yes"|wc -l` -eq 0 ];then
if [ `cat /etc/ssh/sshd_config |grep -v "#"|grep PermitRootLogin|wc -l` -eq 0 ];then
sudo echo "PermitRootLogin yes">>/etc/ssh/sshd_config
else
sudo sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
fi
fi
sudo service ssh restart
sudo echo 'download netinfo'>>/tmp/step.txt
根据mac地址获取静态IP
NetName=`ip a|grep "state UP"|grep -v lo|cut -d : -f 2`
mac=01-`ifconfig $NetName|grep HWaddr|awk '{print $5}'|sed 's/:/-/g'`
sudo wget -O /tmp/$mac url
sudo wget -O /tmp/jq url
sudo chmod +x /tmp/jq
IP_num=`cat /tmp/$mac|/tmp/jq -r '.server_ip'|wc -l`
DNS_num=`cat /tmp/$mac|/tmp/jq -r '.dns'|wc -l`
password=`cat /tmp/$mac|/tmp/jq -r '.password'`
更改密码
echo 'change password'>>/tmp/step.txt
password=${password:-qwe123}
echo "root:${password}"|sudo chpasswd
[[ $IP_num -ge 2 ]]&&IP_num=$[IP_num-2]
[[ $DNS_num -ge 2 ]]&&DNS_num=$[DNS_num-2]
sudo echo '#!/bin/bash'>/tmp/renet.sh
sudo echo 'begin for IP'>>/tmp/step.txt
写入IP信息
for i in `seq -1 $[IP_num-2]`
do
if [ $i -eq -1 ];then
sudo sed -i "s/dhcp/static/" /etc/network/interfaces
sudo echo "address `cat /tmp/$mac|/tmp/jq -r '.server_ip'`">>/etc/network/interfaces
sudo echo "netmask `cat /tmp/$mac|/tmp/jq -r '.netmask'`">>/etc/network/interfaces
sudo echo "gateway `cat /tmp/$mac|/tmp/jq -r '.gateway'`">>/etc/network/interfaces
sudo echo "ifdown${NetName}">>/tmp/renet.sh
sudo echo "ifup${NetName}">>/tmp/renet.sh
else
sudo echo "auto ${NetName}:$i">>/etc/network/interfaces
sudo echo "iface ${NetName}:$i inet static">>/etc/network/interfaces
sudo echo "address `cat /tmp/$mac|/tmp/jq -r '.server_ip'[$i]`">>/etc/network/interfaces
sudo echo "netmask `cat /tmp/$mac|/tmp/jq -r '.netmask'`">>/etc/network/interfaces
sudo echo "ifdown${NetName}:$i">>/tmp/renet.sh
sudo echo "ifup${NetName}:$i">>/tmp/renet.sh
fi
done
sudo echo 'start post'>>/tmp/step.txt
sudo wget --post-data="mac_addr=${mac}&status=0" url
sudo echo "">/etc/resolv.conf
写入nameserver信息
sudo echo 'begin for dns'>>/tmp/step.txt
for j in `seq 0 $[DNS_num-1]`
do
if [ $DNS_num -eq 1 ];then
sudo echo "nameserver `cat /tmp/$mac|/tmp/jq -r '.dns'`">>/etc/resolv.conf
else
sudo echo "nameserver `cat /tmp/$mac|/tmp/jq -r '.dns'[$j]`">>/etc/resolv.conf
fi
done
重启网卡,因为networking用不了,这里感觉也可以执行重启命令
sudo bash /tmp/renet.sh
sudo echo 'end'>>/tmp/step.txt
#rm /tmp/{renet.sh,$mac,jq}
2018年02月01日 02点02分 5
level 2
感觉像是解释器的问题_(:з)∠)_
2018年02月01日 02点02分 6
level 2
找到一种解决方法_(:з)∠)_,写到一个文件里面,装机完成后下载这个文件再执行
2018年02月01日 02点02分 7
level 1
Ubuntu怎么设置使用ks.cfg文件呢?
楼主在做的时候有做文档么,可以参考一下么?[哈哈]
2020年05月26日 03点05分 8
放9楼了,楼中楼放不了太多字
2020年05月26日 07点05分
level 2
default Ubuntu16.04
label Ubuntu16.04
kernel http://域名或IP/Linux/ubuntu16.04/install/netboot/ubuntu-installer/amd64/linux
APPEND initrd=http://域名或IP/Linux/ubuntu16.04/install/netboot/ubuntu-installer/amd64/initrd.gz vga=788 ks=ks文件位置 live-installer/net-image=http://域名或IP/Linux/ubuntu16.04/install/filesystem.squashfs
这个是引导文件,放在tftp目录的,和centos系列的引导差不多
2020年05月26日 07点05分 9
1