Ⅰ linux中想在脚本中实现修改一个ip地址参数的配置文件,用sed命令如何实现
sed -i 's/\(IP=\)\S\S*/\1102.117.2.23/' filename
注:
1)将不变的部分放入带反斜杠的一对括号 \( \) 中并在替换时用 \1 引用。
2)\S用于匹配除单个空格符之外的所有字符。
awk -F"=" '{if($1=="IP")print("IP=102.117.2.23")}' filename > filename.new 2>/dev/null
Ⅱ Linux shell脚本编程——IP地址设置
#!/bin/bash
################################变量定义################################
nameDevice=eth0
ipAdddress=192.168.4.110
prefix=255.255.255.0
netMask=255.255.255.0
gateway=192.168.4.1
dns1=8.8.8.8
dns2=192.168.4.0
################################函数模块################################
##设置NetworkManager服务
function SetNetworkManagerDisable(){
systemctl stop NetworkManager && systemctl disable NetworkManager && echo "NetworkManager is stop and disable" && return 0 || return 1
}
##设置NetworkManager服务
function SetNetworkEnable(){
systemctl restart network && systemctl enable network && echo "network is start and enable" && return 0 || return 1
}
##查看服务器第一个网卡名称
function FindFirstNICName(){
ifconfig|head -n 1|cut -d \: -f 1 && [ $? == 0 ] && nameDevice=`ifconfig|head -n 1|cut -d \: -f 1` && return 0 || return 1
}
##设置服务器网卡IP地址
function SetNICFile(){
cat > /etc/sysconfig/network-scripts/ifcfg-$nameDevice <<EOF
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=$nameDevice
DEVICE=$nameDevice
ONBOOT=yes
IPADDR=$ipAdddress
PREFIX=$prefix
NETMASK=$netMask
GATEWAY=$gateway
DNS1=$dns1
DNS2=$dns2
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
EOF
}
##消除变量
function UnsetVariate(){
unset nameDevice
unset ipAdddress
unset prefix
unset netMask
unset gateway
unset dns1
unset dns2
}
################################程序流程################################
##设置网络服务为network
FindFirstNICName
SetNICFile
SetNetworkEnable
SetNetworkManagerDisable
UnsetVariate
Ⅲ 【Linux】在shell脚本中获取当前主机的主机名以及IP地址
在命令行模式下,获取当前主机名称:
在命令行模式下,获取IP地址:
在shell脚本中获取当前主机的主机名以及IP地址:
说明:
`` 表示执行该语句,并返回执行后的结果;
grep -A1 "eth0" 表示找出带有“eth0”的行,输出中除显示该行外,还显示之后的一行;
awk 则是进行分割。
Ⅳ 关于一个设置ip地址的linux脚本
你那个if [ $?==1 ]有问题,shell里是没有==这种符号的,要么用-eq,要么用=,且=作判断时两边都需空格,否则视为赋值。所以改为 if [ $? = 1 ]或if [ $? -eq 1 ],你试试。