1、shell脚本(实现效果 修改网卡ip地址、重启网卡和ssh免秘钥登录、cpu、内存、磁盘、ip地址)
[root@hhhh opt]# cat 888.sh
#!/bin/bash
#================================================================
function fn_0 ()
{
cat << EOF
1) system
q) quit
EOF
read -p "please input one number for install :" install_number
case ${install_number} in
1)
fn_system
;;
2)
fn_deploy
;;
q)
exit
;;
*)
echo -e "\033[41;37m please input one right number. \033[0m"
fn_0
;;
esac
}
#================================================================
function fn_system ()
{
cat << EOF
1) IP_add
2) restart_network
3) SHH
4) check_sys_info
q) Quit
EOF
read -p "please input one number for install :" install_number
case ${install_number} in
1)
fn_ip
;;
2)
###重启网卡
systemctl restart network
fn_system
;;
### 免秘钥登录
3)
fn_SSH
fn_system
;;
4)
fn_info
;;
q)
fn_0
;;
*)
echo -e "\033[41;37m please input one right number. \033[0m"
fn_system
;;
esac
}
#===============================================================
###ssh 免秘钥同步
function auth_key () {
/usr/bin/expect <<EOF
spawn ssh-copy-id -i /root/.ssh/id_dsa.pub $username@$hostname
expect {
#first connect, no public key in ~/.ssh/known_hosts
"Are you sure you want to continue connecting (yes/no)?" {
send "yes\r"
expect "password:"
send "$password\r"
}
#already has public key in ~/.ssh/known_hosts
"password:" {
send "$password\r"
}
"Now try logging into the machine" {
#it has authorized, do nothing!
}
}
expect eof
EOF
}
function no () {
/usr/bin/ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
}
function yes () {
username="root"
password="123456"
read -p "Please enter the password free login to SSH IP addres :" ip
for hostname in $ip
do
auth_key $username $password $hostname
done
}
function fn_SSH () {
if [ ! -e "/usr/bin/expect" ]
then
/usr/bin/yum -y install expect >/dev/null
fi
file=/root/.ssh/id_*.pub
if [ -f $file ]
then
yes >/dev/null
echo "ssh-keygen success !"
else
no >/dev/null
yes >/dev/null
echo "ssh-keygen success !"
fi
}
#===============================================================
###修改ip
function fn_ip ()
{
NET1=`ls /etc/sysconfig/network-scripts/ | grep ifcfg | awk NR==1 | awk -F '-' '{print $2}'`
oldip=`ip a | grep ${NET1} | awk '{print $2}' | awk NR==2 | awk -F '/' '{print $1}'`
oldmask=`ip a | grep ${NET1} | awk '{print $2}' | awk NR==2 | awk -F '/' '{print $2}'`
cp /etc/sysconfig/network-scripts/ifcfg-${NET1} /etc/sysconfig/network-scripts/ifcfg-${NET1}.bak
read -p "please input new_ip :" new_ip
read -p "please input new_mask(16/24) :" new_mask
read -p "please input new_gateway :" new_gateway
read -p "please input new_dns :" new_dns
if grep "IPADDR1=" /etc/sysconfig/network-scripts/ifcfg-${NET1} >> /dev/null ;then
sed -i "s/IPADDR=.*/IPADDR=$new_ip/" /etc/sysconfig/network-scripts/ifcfg-${NET1}
sed -i "s/PREFIX=.*/PREFIX=$new_mask/" /etc/sysconfig/network-scripts/ifcfg-${NET1}
sed -i "s/GATEWAY=.*/GATEWAY=$new_gateway/" /etc/sysconfig/network-scripts/ifcfg-${NET1}
sed -i "s/DNS1=.*/DNS1=$new_dns/" /etc/sysconfig/network-scripts/ifcfg-${NET1}
else
cat >/etc/sysconfig/network-scripts/ifcfg-${NET1}<<EOF
DEVICE=$NET1
BOOTPROTO=static
IPADDR=$new_ip
PREFIX=$new_mask
IPADDR1=$oldip
PREFIX1=$oldmask
GATEWAY=$new_gateway
DNS1=$new_dns
ONBOOT=yes
EOF
fi
cat /etc/sysconfig/network-scripts/ifcfg-${NET1}
read -p "Save? (yes/no) :" reset
case ${reset} in
yes)
fn_system
;;
*)
cp -raf /etc/sysconfig/network-scripts/ifcfg-${NET1}.bak /etc/sysconfig/network-scripts/ifcfg-${NET1}
fn_system
;;
esac
}
#================================================================
###查看cpu、内存、磁盘、ip地址
function fn_info ()
{
NET1=`ls /etc/sysconfig/network-scripts/ | grep ifcfg | awk NR==1 | awk -F '-' '{print $2}'`
echo "=================================="
echo "================CPU==============="
echo "=================================="
lscpu | grep -E "NUMA|型号名称"
echo "=================================="
echo "==============Memory=============="
echo "=================================="
free -h
echo "=================================="
echo "===============Disk==============="
echo "=================================="
lsblk
echo "=================================="
echo "================IP================"
echo "=================================="
cat /etc/sysconfig/network-scripts/ifcfg-${NET1}
echo "=================================="
echo "=================================="
fn_system
}
fn_0
2、效果
2.1 执行 (1) 修改ip地址(2)重启网卡
[root@hhhh opt]# sh 888.sh
1) system
q) quit
please input one number for install :1
1) IP_add
2) restart_network
3) SHH
4) check_sys_info
q) Quit
please input one number for install :1
please input new_ip :192.168.0.33
please input new_mask(16/24) :24
please input new_gateway :192.168.0.1
please input new_dns :114.114.114.114
DEVICE=ens33
BOOTPROTO=static
IPADDR1=192.168.0.20
PREFIX1=24
GATEWAY=192.168.0.1
DNS1=114.114.114.114
ONBOOT=yes
Save? (yes/no) :yes
1) IP_add
2) restart_network
3) SHH
4) check_sys_info
q) Quit
please input one number for install :2
2.2 执行(3)免秘钥同步登录
[root@hhhh opt]# sh 888.sh
1) system
q) quit
please input one number for install :1
1) IP_add
2) restart_network
3) SHH
4) check_sys_info
q) Quit
please input one number for install :3
Please enter the password free login to SSH IP addres :192.168.0.250 ##输入要做免秘钥登录ip地址
ssh-keygen success !
1) IP_add
2) restart_network
3) SHH
4) check_sys_info
q) Quit
测试直接可以登录 192.168.0.250 不需要输入密码
[root@hhhh opt]# ssh 192.168.0.250
Last login: Sat May 30 23:43:41 2020 from 192.168.0.20
[root@a ~]#
2.3 执行(4) 输出cpu 、内存、硬盘、ip信息
[root@hhhh opt]# sh 888.sh
1) system
q) quit
please input one number for install :1
1) IP_add
2) restart_network
3) SHH
4) check_sys_info
q) Quit
please input one number for install :4
==================================
================CPU===============
==================================
NUMA node(s): 1
NUMA node0 CPU(s): 0
==================================
==============Memory==============
==================================
total used free shared buff/cache available
Mem: 1.4G 104M 1.1G 9.6M 229M 1.1G
Swap: 2.0G 0B 2.0G
==================================
===============Disk===============
==================================
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 37G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sr0 11:0 1 10G 0 rom
==================================
================IP================
==================================
DEVICE=ens33
BOOTPROTO=static
IPADDR1=192.168.0.20
PREFIX1=24
GATEWAY=192.168.0.1
DNS1=114.114.114.114
ONBOOT=yes
==================================
==================================