1、Ubuntu系统网络配置总结(包括主机名、网卡名称、网卡配置)
(1) 修改主机名
1) 临时修改,重启主机后生效
hostname 主机名
2) 永久生效
hostnamectl set-hostname 主机名
或者
直接修改/etc/hostname文件
(2) 修改网卡名称
1) 修改配置文件为下面形式
[root@Ubuntu16 ~]#vi /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0"
或者sed修改
[root@Ubuntu16 ~]#sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=0"#' /etc/default/grub
2) 生效新的grub.cfg文件
[root@Ubuntu16 ~]#grub-mkconfig -o /boot/grub/grub.cfg
或者
[root@Ubuntu16 ~]#update-grub
[root@Ubuntu16 ~]#grep net.ifnames /boot/grub/grub.cfg
linux /vmlinuz-4.4.0-186-generic root=UUID=c5ca1e75-fc41-4e63-a49f-294364753cc4 ro net.ifnames=0
linux /vmlinuz-4.4.0-186-generic root=UUID=c5ca1e75-fc41-4e63-a49f-294364753cc4 ro net.ifnames=0
linux /vmlinuz-4.4.0-186-generic root=UUID=c5ca1e75-fc41-4e63-a49f-294364753cc4 ro recovery nomodeset dis_ucode_ldr net.ifnames=0
3) 重启生效
[root@Ubuntu16 ~]# reboot
(3) 网卡配置
Ubuntu从17.10开始,已放弃在/etc/network/interfaces里配置IP地址,即使配置也不会生效,而是改成netplan方式,配置写在/etc/netplan/01-netcfg.yaml或者类似名称的yaml文件里
1) 配置自动获取IP
[root@Ubuntu18 ~]# cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: yes
修改网卡配置文件后需执行命令生效:
[root@Ubuntu18 ~]#netplan apply
2) 配置静态IP
[root@Ubuntu18 ~]#vim /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
addresses: [192.168.8.10/24,10.0.0.10/8]
gateway4: 192.168.8.1
nameservers:
search: [magedu.com, magedu.org]
addresses: [180.76.76.76, 8.8.8.8, 1.1.1.1]
配置好后,查看方式如下:
a) 查看ip和gateway
[root@Ubuntu18 ~]#ip addr
[root@Ubuntu18 ~]#route -n
b) 查看DNS
[root@Ubuntu18 ~]#systemd-resolve --status
2、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
(1) expect脚本形式
[root@CentOS8 script]#cat expect4
#!/usr/bin/expect
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
interac
[root@CentOS8 script]#./expect4 10.0.0.71 root root123
spawn ssh root@10.0.0.71
root@10.0.0.71's password:
Last login: Tue Jan 26 17:15:54 2021 from 10.0.0.1
[root@CentOS7-1 ~]#
(2) shell脚本形式
[root@CentOS8 script]#vim expect5.sh
#!/bin/bash
ip=$1
user=$2
password=$3
expect <<EOF
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
expect "]#" { send "echo abc | mail -s just_test root\n" }
expect "]#" { send "exit\n" }
expect eof
EOF
[root@CentOS8 script]#./expect5.sh 10.0.0.71 root root123
3、生成10个随机数保存于数组中,并找出其最大值和最小值
[root@CentOS8 script]#cat max_min.sh
#!/bin/bash
declare -i min max
declare -a nums
for ((i=0;i<10;i++));do
nums[$i]=$RANDOM
[ $i -eq 0 ] && min=${nums[$i]} && max=${nums[$i]}&& continue
[ ${nums[$i]} -gt $max ] && max=${nums[$i]}
[ ${nums[$i]} -lt $min ] && min=${nums[$i]}
done
echo “All numbers are ${nums[*]}”
echo Max is $max
echo Min is $min
4、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
(1) 升序排列
[root@CentOS-8 ~]# cat shengxu.sh
#!/bin/bash
while :
do
declare -a NUMS
read -p "请输入一个数字( e 结束输入,q 退出程序 ):" N
if [ $N == "q" ];then
break
elif [ $N == "e" ];then
L=${#NUMS[*]}
if [ $L == 0 ];then
echo 没有数字。
elif [ $L == 1 ];then
echo 只有一个数字,无需排序。
else
for i in `seq $[L-1]`;do
for j in `seq $i $[L-1]`;do
MIN=${NUMS[$i-1]}
if [ $MIN -gt ${NUMS[$j]} ];then
NUMS[$i-1]=${NUMS[$j]}
NUMS[$j]=$MIN
fi
done
done
echo 从小到大排序:${NUMS[*]}
break
fi
elif [[ $N =~ ^[0-9]+$ ]];then
NUMS[$i]=$N
echo 已输入数字:${NUMS[*]}
echo 个数: ${#NUMS[*]}
let i++
else
echo "您输入的不是数字,请重新输入。"
continue
fi
done
(2) 降序排列
[root@CentOS-8 ~]# cat jiangxu.sh
#!/bin/bash
while :
do
declare -a NUMS
read -p "请输入一个数字( e 结束输入,q 退出程序 ):" N
if [ $N == "q" ];then
break
elif [ $N == "e" ];then
L=${#NUMS[*]}
if [ $L == 0 ];then
echo 没有数字。
elif [ $L == 1 ];then
echo 只有一个数字,无需排序。
else
for i in `seq $[L-1]`;do
for j in `seq $i $[L-1]`;do
MAX=${NUMS[$i-1]}
if [ $MAX -lt ${NUMS[$j]} ];then
NUMS[$i-1]=${NUMS[$j]}
NUMS[$j]=$MAX
fi
done
done
echo 从大到小排序:${NUMS[*]}
break
fi
elif [[ $N =~ ^[0-9]+$ ]];then
NUMS[$i]=$N
echo 已输入数字:${NUMS[*]}
echo 个数: ${#NUMS[*]}
let i++
else
echo "您输入的不是数字,请重新输入。"
continue
fi
done