一个修改时区timezone相关的shell脚本(附循环生成iplist)

本文详细介绍了在Ubuntu x86_12.04 LTS系统中手动和图形界面修改时区的方法,并提供了一个批量修改系统时区的Shell脚本,方便管理员批量处理多个服务器或客户端。

基于ubuntu x86 12.04LTS

首先修改时区有三种方式:

一.没有图形界面GUI的情况下

1.使用tzselect命令并根据提示操作

2.把/usr/share/zoneinfo/下各时区文件覆盖/etc/localtime,注意备份和权限问题

二.有GUI的情况下可以直接点击时间选项卡修改

最后可以使用sudo ntpdate cn.pool.ntp.org修改时间
cn.pool.ntp.org是位于中国的公共NTP服务器,用来同步你的时间

以上是逻辑相关操作

接下来是脚本

#!/bin/bash

#modify system timezone

#timezonemod.sh


bitadir=/home/bita/

workdir=/home/bita/bisc

zonefiledir=/usr/share/zoneinfo

zoneconfdir=/etc/localtime


for ip in $(cat $workdir"/iplist.txt")

do

ssh -p36000 bita@$ip << EOF

echo "bita" | sudo -S cp /etc/localtime /etc/localtime.bak    //备份时区文件

echo "bita" | sudo -S cp $zonefiledir"/Asia/Shanghai" $zoneconfdir    //修改系统时区为Asia-Shanghai

echo "bita" | sudo -S ntpdate cn.pool.ntp.org  //跟cn.pool.ntp.org服务器同步时间

exit

EOF

done

echo "timezone modify completed!"

PS:此脚本是基于已建立服务器和客户端双向ssh秘钥认证的环境下,否则使用时要注意ssh认证相关的问题,可参考这里


附带一个自动生成ip列表的文件(非传参定制)

#!/bin/bash

#generate a ip list 

for(ip=201;ip<240;ip++)

do

if [ ip -lt 216 ]

then

echo "192.168.11.$ip" >> iplist

else

echo "192.168.12.$ip" >> iplist

fi

done

//生成一个从192.168.11.201~192.168.11.215和192.168.12.216~192.168.12.239的ip列表文件

编写一个 shell 苬本从机房路由器获取可用 IP 地址并写入 `IpList.txt` 文件,通常涉及以下步骤: 1. **获取路由器的 IP 地址列表** 路由器通常会提供一个 Web 界面或命令行接口(CLI)来访问其管理功能。如果路由器支持 SSH 登录,则可以通过 SSH 连接到路由器并执行相关命令来获取 IP 地址列表。例如,使用 `ssh` 命令连接到路由器并执行 `arp` 或 `nmap` 等工具来扫描可用 IP 地址[^1]。 2. **解析获取的 IP 地址信息** 从路由器获取的输出通常包含多个字段,需要使用 `awk`、`grep` 或 `sed` 等工具提取 IP 地址信息。例如,使用 `grep` 过滤出包含 IP 地址的行,并用 `awk` 提取具体的 IP 地址字段。 3. **将提取的 IP 地址写入文件** 将提取到的 IP 地址保存到 `IpList.txt` 文件中,可以使用重定向操作符 `>` 或 `>>` 来写入文件。`>` 会覆盖文件内容,而 `>>` 会追加内容到文件末尾。 4. **设置脚本权限并运行** 保存脚本后,使用 `chmod +x script.sh` 设置脚本的可执行权限,然后运行脚本。 以下是一个简单的示例脚本: ```bash #!/bin/bash # 定义路由器的 IP 地址、用户名和密码 ROUTER_IP="192.168.1.1" ROUTER_USER="admin" ROUTER_PASS="password" # 使用 expect 工具自动登录路由器并执行命令 /usr/bin/expect <<EOF spawn ssh $ROUTER_USER@$ROUTER_IP expect "password:" send "$ROUTER_PASS\r" expect "#" send "arp -a\r" expect "#" send "exit\r" EOF # 使用 arp 命令获取本地网络中的 IP 地址列表,并提取 IP 地址 arp -a | awk '{print $2}' | sed 's/(//;s/)//' > IpList.txt ``` ### 注意事项: - **SSH 登录和命令执行**:上述脚本使用了 `expect` 工具来自动处理 SSH 登录过程。确保系统中已安装 `expect`。 - **IP 地址获取方式**:不同的路由器可能提供不同的命令行工具或接口,具体命令可能需要根据路由器的型号进行调整。 - **安全性**:在脚本中直接使用明文密码存在安全风险,建议使用 SSH 密钥认证或其他安全机制[^1]。 ### 示例代码解析: - **`arp -a`**:显示 ARP 表,包含本地网络中的 IP 地址和 MAC 地址。 - **`awk '{print $2}'`**:提取 ARP 表中的 IP 地址字段。 - **`sed 's/(//;s/)//'`**:去除 IP 地址周围的括号。 ### 相关问题: 1. 如何在不同型号的路由器上获取 IP 地址列表? 2. 如何使用 SSH 密钥认证替代明文密码? 3. 如何使用 `nmap` 扫描本地网络中的可用 IP 地址? 4. 如何在脚本中处理路由器返回的非标准输出格式? 5. 如何定期运行该脚本以更新 IP 地址列表?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值