Shell:修改Linux文件【/etc/hosts】
脚本使用方法:
1 |
sh xxx.sh '主机名' 'IP地址' |
脚本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
#!/bin/bash # ==================== # Automatic Modify File /etc/hosts # Add Reord # or, Modify Record # ==================== # ------ Variables # Input str_hostname=$1 str_ipaddr=$2 # 时间 str_datetime_current=`date '+%F_%R:%S'` # ------ Function # ------ main() # 1. Find Record result_find_record=`cat /etc/hosts | grep -vE '#' | egrep "[[:space:]]$str_hostname$"` # 2. Backup Record # 3. Modify Record # ####### 流 echo -e "Display:" echo -e "=============================" echo -e "Host Name: ["$str_hostname"]" echo -e "IP Address: ["$str_ipaddr"]" echo -e "=============================" echo -e "-------- 1. Find Record" echo -e $result_find_record echo -e "********" # 如果,在文件中找不到记录 / 添加记录 if [[ -z "$result_find_record" ]] then echo -e 'Not Found.' echo -e "# Add date: ["$str_datetime_current"]" >> /etc/hosts echo -e $str_ipaddr"\t"$str_hostname >> /etc/hosts echo -e "\n" >> /etc/hosts else echo -e 'Has been Found.' for_counter_result_find_record=1 for_str_ipaddr_before="" for result_item in $result_find_record do # Begin. echo -e "######### ["$result_item"]" # Loop Counter - Display echo -e "Loop: ["$for_counter_result_find_record"]" # Logical Area if [[ $(($for_counter_result_find_record%2)) -eq 1 ]] then # echo -e "奇数" for_str_ipaddr_before=$result_item else # echo -e "偶数" echo -e "-------- 2. Backup Record" echo -e "Before loop: IPAddr: ["$for_str_ipaddr_before"]" sed -i "/"$result_item"/s/"$for_str_ipaddr_before"/# &/" /etc/hosts echo -e "********" echo -e "-------- 3. Add Record" echo -e "# Add date: ["$str_datetime_current"]" >> /etc/hosts echo -e $str_ipaddr"\t"$str_hostname >> /etc/hosts echo -e "\n" >> /etc/hosts echo -e "********" fi # End. echo -e "######### Finished." echo -e "" # Loop Counter for_counter_result_find_record=$(($for_counter_result_find_record+1)) done fi # ####### # Finished. # ####### |