Ⅰ 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 ],你試試。