一直是通过firefox的插件来管理HOSTS,但是最近FF的最近版本老是将一些很多用的插件不可用了! 换了很多其他的插件还是不好用,干脆自己动手写个小脚本来做HOST管理!
#!/bin/bash
#
# use for change /etc/hosts file
# author :zhaoming.xuezm
# date :2011-12-5
# last modify :2011-12-6
# version :1.0.0
#------------------------------------------------------ param check --------------------------------------------------
if [ $# -ne 1 ];then
echo 'Type 'hc help' for usage.'
exit 1
fi
#------------------------------------------------------ init --------------------------------------------------
#check has the privilege to change hosts
user_name=`id -nu`
group_name=`id -ng`
if [ $group_name = "root" ];then
echo 'please input adminstrator passwd :'
sudo gpasswd -a $user_name $group_name
fi
cd `dirname $0`
bin_path=`pwd`
# hostdir is used to store host file which add by operator
if [ ! -d hostdir ];then
mkdir hostdir
fi
cd $bin_path/hostdir
host_suffix="_host"
current_hostfile=""
action=$1
declare -a host_array;
#error_code && error message
none_files=4
none_files_message="you should add a file first !"
#------------------------------------------------------ list all host file --------------------------------------------------
list_host(){
local index=1
file_num=`ls *host >> /dev/null 2>&1`
if [ $? -ne 0 ];then
printf "%s\n" "none files"
return $none_files
else
for i in `ls *host`
do
#should cut the "_host" suffix
temp=$i
real_length=`expr length $temp`
suffix_length=`expr length $host_suffix`
need_length=`expr $real_length - $suffix_length`
real_name=`expr substr $temp 1 $need_length`
echo "$index : $real_name"
host_array[$index]=$i
index=$(($index+1))
done
fi
}
#judge parameter 1 is equal system default
check_is_default_hostfile(){
if [ $# -ne 1 ];then
echo 'param error ! '
return 2
fi
if [ -z $current_hostfile ] || [ $current_hostfile = $1 ];then
return 0
fi
}
switch_host(){
echo '------welcome to use host switch-------'
list_host
if [ $? -eq $none_files ];then
echo "$none_files_message"
exit
fi
read selection
cat ${host_array[$selection]} > /etc/hosts
current_hostfile=${host_array[$selection]}
echo "------switch to " ${host_array[$selection]} "------"
}
add_host(){
echo '------input file name ------'
read filename
vim $filename
mv $filename $filename$host_suffix
}
del_host(){
echo '------del host:choose the file -----'
list_host
if [ $? -eq $none_files ];then
echo "$none_files_message"
exit
fi
read selection
rm -f ${host_array[$selection]}
if [ $? -eq 0 ];then
echo "del host file ${host_array[$selection]} success"
else
echo "del host file ${host_array[$selection]} failed"
fi
}
edit_host(){
echo '------eidt host:choose the file -----'
list_host
if [ $? -eq $none_files ];then
echo "$none_files_message"
exit
fi
read selection
vim ${host_array[$selection]}
check_is_default_hostfile ${host_array[$selection]}
if [ $? -eq 0 ];then
cat ${host_array[$selection]} > /etc/hosts
fi
}
show_file_content(){
list_host
if [ $? -eq $none_files ];then
echo "$none_files_message"
exit
fi
read selection
cat ${host_array[$selection]}
}
show_version(){
printf "\n"
printf "%s\n" 'hc :host change , version 1.0.0 '
printf "\n"
printf "%s\n" "Copyright (C) 2011-2011 inter12."
printf "\n"
}
show_help(){
printf "\n"
printf "%s\n" "most subcommand take action ! If not allow no arguments supplied to such a command!"
printf "\n"
printf "%s\n" "Available subcommands:"
printf "%s\n" " add : add a new host file and saved as name which you input ! it locate in the path: path/hostdir "
printf "%s\n" " del : del the host file ! if this file is current used as system hosts .will still valid ! "
printf "%s\n" " edit : edit the host file and if the file you edit is current syste, hosts ,it will take effect immediately !"
printf "%s\n" " sw : change the file which you choose as a system default hosts "
printf "%s\n" " list : list all host file !"
printf "%s\n" " version | --version : show hc version "
printf "%s\n" " help | --help : show hc command format !"
printf "\n"
printf "\n"
printf "%s\n" "hc is a tool for host change !"
printf "%s\n" "For additional infomation. you can mail to godspeed712@gmail.com | zhaoming.xuezm@alibaba-inc.com"
}
#------------------------------------------------------ main entrance --------------------------------------------------
case "$action" in
sw)
switch_host
;;
add)
add_host
;;
del)
del_host
;;
edit)
edit_host
;;
list)
show_file_content
;;
--help | help)
show_help
;;
--version | version)
show_version
;;
*)
echo 'Type 'hc help' for usage.'
;;
esac
分享到:
相关推荐
Linux 修改 etc/hosts文件 hosts文件 hosts —— the static table lookup for host name(主机名查询静态表)。 hosts文件是Linux系统上一个负责ip地址与域名快速解析的文件,以ascii格式保存在/etc/目录下。...
/etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。 比如SSH服务,我们通常只对管理员开放,那我们就可以禁用不必要的IP,而只开放...
1、Linux修改本机别名/etc/hosts的hostName后经常不生效解决 Linux修改本机别名/etc/hosts的hostName后经常不生效, 比如我们/etc/hosts的内容如下: #192.68.1.10 message.xxx.com 192.68.1.11 message....
下面小编就为大家带来一篇新装linux系统/etc/sysconfig目录下无iptables文件的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在Linux系统中,尤其是CentOS 6.7版本,配置网络连接时,有时会遇到一些问题,例如在`/etc/resolv.conf`文件中修改DNS地址后,重启系统或网络服务,这些更改不会生效。这个问题通常与网络服务的管理方式有关,特别是...
自动修改linux下/etc/sysconfig/network-scripts/ifcfg-ethX网卡文件的脚本
### 浅析Linux下的/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc 在Linux系统中,为了方便管理和配置用户的Shell环境,系统提供了多种不同的配置文件。这些配置文件按照一定的规则来确定何时加载及加载...
在Linux系统中,用户管理和权限控制是至关重要的部分,而这一切的核心都离不开两个文件:`/etc/passwd` 和 `/etc/shadow`。这两个文件对于系统的正常运行至关重要,没有它们,几乎无法进行用户登录或执行与账户相关...
1. 列出`/etc`目录下的所有文件名称:使用`ls -a /etc`命令,其中`-a`选项表示显示隐藏文件。 2. 创建文件`file1`和`file2`并复制到`/home`目录下:首先创建文件,`touch /home/file1 /home/file2`,然后复制,`cp ...
[root@localhost ~]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Sat Nov 3 12:03:31 2018 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), ...
下面小编就为大家带来一篇iptables配置(/etc/sysconfig/iptables)操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
例如,不当使用`chmod`命令更改/etc目录的权限可能导致系统服务无法正常运行。本文将详细介绍如何恢复因误操作而改变的/etc目录权限。 #### 二、误操作示例 假设在一个Linux服务器上执行了以下命令: ```bash ...
在Linux操作系统中,用户账户管理是系统安全与稳定的核心部分,而`/etc/shadow`文件则是这个系统中至关重要的一个组件。它存储了所有用户的密码加密信息以及其他账户相关的安全属性,是保护系统免受未经授权访问的...
标题中的问题涉及到Ubuntu系统下 `/etc/resolv.conf` 文件在重启后被自动恢复原状的情况。这个文件在Linux系统中是用于配置DNS(域名系统)服务器的,它包含了系统进行域名解析所需的DNS服务器地址。当网络接口配置...
cp /etc/hosts /etc/hosts_origin wget -q https://gitlab.com/ineo6/hosts/-/raw/master/next-hosts -O /tmp/new1.txt --no-check-certificate cat /tmp/new1.txt /etc/hosts_origin > /tmp/hostsNewAll.txt cp /...
【标题】"Linux基础课件用户组文件-/etc/gshadow文件"主要涉及的是Linux操作系统中的用户组管理和权限控制,特别是与系统中一个重要的配置文件——`/etc/gshadow`相关的知识。这个文件在Linux系统中扮演着关键角色...
Linux下常见文件和目录的知识点主要包括Linux系统的文件组织结构,关键配置文件的功能和作用,以及系统运行和管理相关的目录和文件。 首先,Linux系统中关键的配置文件大都位于/etc目录下。例如,/etc/passwd文件...
本课件将详细解释这些概念,并可能通过实例展示如何查看、添加和修改/etc/passwd文件中的条目。同时,还可能涵盖与用户账户相关的其他文件,如/etc/group(用于管理用户组)和/etc/shadow(存储加密密码和其他...
默认情况下,大多数Linux系统都会在`/etc/hosts`文件中包含`127.0.0.1 localhost`这样的条目,但是有时候可能需要添加特定的主机名和IP地址对。 - 打开`/etc/hosts`文件进行编辑: ``` #> vi /etc/hosts ``` ...