当前位置:首页 » 编程软件 » shell脚本ip

shell脚本ip

发布时间: 2022-08-06 14:08:49

A. shell 脚本运行输入ip格式错误,怎么重新输入

sh 绝对路径/xxx.sh 参数1 参数2 参数3........参数n

---------------------------------------------------------------------------------
如果你保存临时文件的话,可以使用xargs
比如脚本文件为1.sh,而参数保存在args文件中,用一个命令得到参数内容
cat args
那么最后可以这样执行
cat args |xargs sh 1.sh

如果不打算保存临时文件,那你只好在脚本中写清楚要如何调用,参数有几个。
比如你使用2.sh调用1.sh,在2.sh 中写清楚
1.sh $arg1 $arg2这样就可以了。
当然脚本中的arg1,arg2也可以是最初的第一个脚本调用传递进来的,也可以是硬编码写死的。

B. 帮忙写一个shell脚本 转换ip

echo $IPADDR|awk -F"." '{print $1"."$2"."($3+0)"."($4+0)}'

C. shell 脚本获得当前 ip地址

bin=$(ifconfig | awk -F'addr:|Bcast' '/Bcast/{print $2}')

D. shell脚本如何实现把IP组里的ip逐个输出,并循环完成指定任务

#!/bin/bash
host=192.168.1.1,192.168.1.2,192.168.1.3
array=(`echo $host|tr ',' ' '`)
for ip in ${array[@]};do
scp XXX root@$ip:~
ssh root@$ip << ressh
执行命令
exit
ressh
done

E. shell脚本配置IP

你编辑的是ifcfg-eth2,怎么写进去的Device是eth0??
我是6.5的测试系统,执行之后可以正常启动,不过报错是针对/etc/init.d/network这个脚本的
./IP_eth0.sh 104
/etc/init.d/network: line 184: command not found
/etc/init.d/network: line 184: 33mDEVICE=eth0: command not found
/etc/init.d/network: line 185: command not found
/etc/init.d/network: line 185: 33mTYPE=Ethernet: command not found
/etc/init.d/network: line 184: command not found
/etc/init.d/network: line 184: 33mDEVICE=eth1: command not found
/etc/init.d/network: line 185: command not found
/etc/init.d/network: line 185: 33mTYPE=Ethernet: command not found
/etc/init.d/network: line 184: command not found
/etc/init.d/network: line 184: 33mDEVICE=eth2: command not found
/etc/init.d/network: line 185: command not found
/etc/init.d/network: line 185: 33mTYPE=Ethernet: command not found

F. shell脚本修改集群IP

程序逻辑有问题。
你的想法是将10.255.0.11改成11.11.11.14,10.255.0.12改成11.11.11.15,
但是你的脚本是在每一台服务器上都遍历了11.11.11.14~15,最后修改成的ip(11.11.11.15)才是生效的,之前的修改都被后面的修改覆盖了。
正确的写法是建立两个数组分别表示原来的ip和新的ip,遍历第一个数组的同时,按照元素序号对应取第二个数组的值,从而达到修改的目的。
两个数组同步遍历的写法如下:
#!/bin/bash
array1=(10.255.0.{11..12})
array2=(11.11.11.{14..15})
i=0
for ip in ${array1[@]}
do
echo ${ip}"->"${array2[i]}
#你的修改
#你的修改
let i++
done
补充一句,你的修改不会使新ip生效,即使生效了,也因为ip生效一瞬间你的ssh连接中断,会产生无法估计的后果。正确的做法以单引号引用一个后台重启网卡服务的命令:
ssh $RemoteHost 'service xinetd restart 1>/dev/null 2>&1 &'
当然,不同linux版本重启命令不一致,但基本写法是通行的。

G. shell脚本,实现脚本ip地址变换,每次输出不同的ip地址。

先看效果:

[root@mailtmp]#./runplayload.shiplist.txt-s192.168.33.34-40
Nosuchip【192.168.33.35】in【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mailtmp]#./runplayload.shiplist.txt-s192.168.33.34-192.168.33.40
Nosuchip【192.168.33.35】in【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mailtmp]#


看一下iplist.txt文本格式

[root@mailtmp]#catiplist.txt
192.168.33.34
192.168.33.36-192.168.33.40
192.168.33.200
192.168.33.204-210
192.168.33.231


脚本正文:

#!/bin/bash
#------------------------------------------
#Copyritht(C),[email protected]
#脚本名:
#脚本位置:
#脚本用途:
#脚本修改历史:
#<作者><日期><版本><描述>
#老耿2015/07/131.0创建
#版权:GPL
#-------------------------------------------
./root/.bash_profile
#定义ip个数
r=6
#传参判断
echo$3|grep-q"[0-9]-[0-9]";stat=$?#这里在逻辑上应该先判断存不存在$3
if[$#-ne3-o"$2"!="-s"-o${stat}-ne0];then
if[$stat-ne0];then
echo"脚本使用说明:
COMMAND文件名-sip范围
例:sh./run_playload.shiplist.txt-s192.168.33.20-50
或sh./run_playload.shiplist.txt-s192.168.33.20-192.168.33.50"
exit
fi
fi
if[!-f$1];then
echo"文件【$1】不存在!"
exit
fi
#iplist.txt文件格式转换
iplist=`cat$1|awk-F'[-.]''{if($0~/-/){sub(/-.*$/,"",$4);for(i=$4;i<=$NF;i++){print$1"."$2"."$3"."i}}elseprint$0}'`
#xx.xx.xxipv4前三个字节
ip1="`echo$3|sed-r's/.[0-9]+-.*$//'`"
#起始ip最后一个字节
ip2="`echo$3|awk-F'.''{sub(/-.*$/,"",$4);print$4}'`"
#结束ip最后一个字节
ip3="`echo$3|awk-F'[-.]''{print$NF}'`"
#如果起始ip大于结束ip,则两个互换
if(($ip2>$ip3));then
ip_tmp=$ip2
ip2=$ip3
ip3=$ip_tmp
fi
#合并完整的ip,存在ip()里
ip=()
foriin`seq${ip2}${ip3}`
do
ipp="${ip1}.${i}"
echo"${iplist}"|grep-wq"${ipp}"
if[$?-ne0];then
echo"Nosuchip【${ipp}】in【$1】"
else
ip=(${ip[*]}${ipp})
fi
done
#判断ip()不为空的情况
if[-n"${ip[*]}"];then
#定义ip个数
#r=6
#判断ip取值个数,分两种情况处理
if((${r}<=${#ip[@]}));then
foriin`seq${r}`
do
letj=$i-1
echo"${i}--${ip[j]}"
done
else
for((i=0;i<${#ip[@]};i++))
do
letj=$i+1
echo"${j}--${ip[i]}"
done
echo"WARNING:受范围限制,未能取到完整的${r}个ip!"
fi
fi

H. shell脚本来配置永久IP地址

可以使用shell自动配置啊
楼主可以私信一下吗?
以后如果有linux系统问题, shell自动编程问题,可以一起研究一下。

I. 求大神给一个shell脚本,实现脚本ip地址变换,每次输出不同的ip地址。

先看效果:

[root@mailtmp]#./runplayload.shiplist.txt-s192.168.33.34-40
Nosuchip【192.168.33.35】in【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mailtmp]#./runplayload.shiplist.txt-s192.168.33.34-192.168.33.40
Nosuchip【192.168.33.35】in【iplist.txt】
1--192.168.33.34
2--192.168.33.36
3--192.168.33.37
4--192.168.33.38
5--192.168.33.39
6--192.168.33.40
[root@mailtmp]#



看一下iplist.txt文本格式

[root@mailtmp]#catiplist.txt
192.168.33.34
192.168.33.36-192.168.33.40
192.168.33.200
192.168.33.204-210
192.168.33.231


脚本正文:

#!/bin/bash
#------------------------------------------
#Copyritht(C),[email protected]
#脚本名:
#脚本位置:
#脚本用途:
#脚本修改历史:
#<作者><日期><版本><描述>
#老耿2015/07/131.0创建
#版权:GPL
#-------------------------------------------
./root/.bash_profile
#定义ip个数
r=6
#传参判断
echo$3|grep-q"[0-9]-[0-9]";stat=$?#这里在逻辑上应该先判断存不存在$3
if[$#-ne3-o"$2"!="-s"-o${stat}-ne0];then
if[$stat-ne0];then
echo"脚本使用说明:
COMMAND文件名-sip范围
例:sh./run_playload.shiplist.txt-s192.168.33.20-50
或sh./run_playload.shiplist.txt-s192.168.33.20-192.168.33.50"
exit
fi
fi
if[!-f$1];then
echo"文件【$1】不存在!"
exit
fi
#iplist.txt文件格式转换
iplist=`cat$1|awk-F'[-.]''{if($0~/-/){sub(/-.*$/,"",$4);for(i=$4;i<=$NF;i++){print$1"."$2"."$3"."i}}elseprint$0}'`
#xx.xx.xxipv4前三个字节
ip1="`echo$3|sed-r's/.[0-9]+-.*$//'`"
#起始ip最后一个字节
ip2="`echo$3|awk-F'.''{sub(/-.*$/,"",$4);print$4}'`"
#结束ip最后一个字节
ip3="`echo$3|awk-F'[-.]''{print$NF}'`"
#如果起始ip大于结束ip,则两个互换
if(($ip2>$ip3));then
ip_tmp=$ip2
ip2=$ip3
ip3=$ip_tmp
fi
#合并完整的ip,存在ip()里
ip=()
foriin`seq${ip2}${ip3}`
do
ipp="${ip1}.${i}"
echo"${iplist}"|grep-wq"${ipp}"
if[$?-ne0];then
echo"Nosuchip【${ipp}】in【$1】"
else
ip=(${ip[*]}${ipp})
fi
done
#判断ip()不为空的情况
if[-n"${ip[*]}"];then
#定义ip个数
#r=6
#判断ip取值个数,分两种情况处理
if((${r}<=${#ip[@]}));then
foriin`seq${r}`
do
letj=$i-1
echo"${i}--${ip[j]}"
done
else
for((i=0;i<${#ip[@]};i++))
do
letj=$i+1
echo"${j}--${ip[i]}"
done
echo"WARNING:受范围限制,未能取到完整的${r}个ip!"
fi
fi
热点内容
网吧怎么通过服务器玩网络游戏 发布:2025-02-08 19:59:52 浏览:912
文档编辑加密 发布:2025-02-08 19:56:31 浏览:390
phpmysql存储过程实例 发布:2025-02-08 19:54:40 浏览:159
淘宝卖的地下城脚本 发布:2025-02-08 19:41:40 浏览:61
安卓怎么把提升画质关了 发布:2025-02-08 19:40:11 浏览:359
我想你加密 发布:2025-02-08 19:39:24 浏览:212
java手机号正则表达式 发布:2025-02-08 19:34:50 浏览:350
ue加密 发布:2025-02-08 19:34:05 浏览:473
滁州压缩机 发布:2025-02-08 19:34:03 浏览:880
压缩棉花絮片 发布:2025-02-08 19:33:12 浏览:394