shell习题100(十六)

编程入门 行业动态 更新时间:2024-10-07 18:28:39

shell<a href=https://www.elefans.com/category/jswz/34/1769768.html style=习题100(十六)"/>

shell习题100(十六)

题目要求

linux系统中,目录/root/下有一个文件ip-pwd.ini,内容如下:

10.111.11.1,root,xyxyxy
10.111.11.2,root,xzxzxz
10.111.11.3,root,123456
10.111.11.4,root,xxxxxx
……

文件中每一行的格式都为linux服务器的ip,root用户名,root密码,请用一个shell批量将这些服务器中的所有tomcat进程kill掉。

参考答案
#!/bin/bash
#这个脚本用来批量杀tomcat进程
#作者:猿
#日期:2018-12-12cat > kill_tomcat.expect <<EOF
#!/usr/bin/expect
set passwd [lindex \$argv 0]
set host [lindex \$argv 1]
spawn ssh root@\$hostexpect {"yes/no" { send "yes\r"; exp_continue}"password:" { send "\$passwd\r" }
}expect "]*"
send "killall java\r"
expect "]*"
send "exit\r"
EOFchmod a+x kill_tomcat.expectcat ip-pwd.ini|while read line
doip=`echo $line |awk -F ',' '{print $1}'`pw=`echo $line |awk -F ',' '{print $3}'`./kill_tomcat.expect $pw $ip
done
题目要求

写一个脚本查找/data/log目录下,创建时间是3天前,后缀是*.log的文件,打包后发送至192.168.1.2服务上的/data/log下,并删除原始.log文件,仅保留打包后的文件。

参考答案
#!/bin/bash
#这个脚本用来查找老日志打包
#作者:猿
#日期:2018-12-12cd /data/log
find . -type f -name "*.log" -mtime +3 > /tmp/old_log
d=`date +%F`tar czf $d.tar.gz `cat /tmp/old_log|xargs`
rsync -a $d.tar.gz 192.168.1.2:/data/log/
cat /tmp/old_log|xargs rm
题目要求

有如下文本,其中前5行内容为

1111111:13443253456
2222222:13211222122
1111111:13643543544
3333333:12341243123
2222222:12123123123

用shell脚本处理后,按下面格式输出:

[1111111]
13443253456
13643543544
[2222222]
13211222122
12123123123
[3333333]
12341243123
参考答案
#!/bin/bash
#这个脚本用来处理文本
#作者:猿
#日期:2018-12-12for w in `awk -F ':' '{print $1}' 3.txt |sort |uniq`
doecho "[$w]"awk -v w2=$w -F ':' '$1==w2 {print $2}' 3.txt
done
题目要求

要求:两类机器一共300多台,写个脚本自动清理这两类机器里面的日志文件。在堡垒机批量发布,也要批量发布到crontab里面。

A类机器日志存放路径很统一,B类机器日志存放路径需要用匹配(因为这个目录里除了日志外,还有其他文件,不能删除。匹配的时候可用.log)

A类:/opt/cloud/log/ 删除7天前的
B类: /opt/cloud/instances/ 删除15天前的

要求写在一个脚本里面。不用考虑堡垒机上的操作,只需要写出shell脚本。

参考答案
#!/bin/bash
#这个脚本用来删除老日志
#作者:猿
#日期:2018-12-12dir1=/opt/cloud/log/
dir2=/opt/cloud/instance/if [ -d $dir1 ]
thenfind $dir1 -type f -mtime +7 |xargs rm
elif [ -d $dir2 ]
thenfind $dir2 -name "*.log" -type f -mtime +15 |xargs rm
fi
题目要求

贷款有两种还款的方式:等额本金法和等额本息法,简单说明一下等额本息法与等额本金法的主要区别:

等额本息法的特点是:每月的还款额相同,在月供中“本金与利息”的分配比例中,前半段时期所还的利息比例大、本金比例小,还款期限过半后逐步转为本金比例大、利息比例小。所支出的总利息比等额本金法多,而且贷款期限越长,利息相差越大。
等额本金法的特点是:每月的还款额不同,它是将贷款额按还款的总月数均分(等额本金),再加上上期剩余本金的月利息,形成一个月还款额,所以等额本金法第一个月的还款额最多 ,而后逐月减少,越还越少。所支出的总利息比等额本息法少。

两种还款方式的比较不是我们今天的讨论范围,我们的任务就是做一个贷款计算器。其中:
等额本息每月还款额的计算公式是:
每月还款额=[贷款本金×月利率×(1+月利率)还款月数]÷[(1+月利率)还款月数-1]
等额本金每月还款额的计算公式是:
每月还款额=贷款本金÷贷款期数+(本金-已归还本金累计额)×月利率

参考答案
#!/bin/bash
#这个脚本用来实现简易的房贷计算器
#作者:猿
#日期:2018-12-12read -p "请输入贷款总额(单位:万元):" sum_w
read -p "请输入贷款年利率(如年利率为6.5%,直接输入6.5):" y_r
read -p "请输入贷款年限(单位:年):" y_n
echo "贷款计算方式:"
echo "1)等额本金计算法"
echo "2)等额本息计算法"
read -p "请选择贷款方式(1|2)" type
#贷款总额
sum=`echo "scale=2;$sum_w*10000 " | bc -l`
#年利率
y_r2=`echo "scale=6;$y_r/100 " | bc -l`
#月利率
m_r=`echo "scale=6;$y_r2/12 " | bc -l`
#期数
count=$[$y_n*12]
echo "期次 本月还款额 本月利息 未还款额"jin()
{#月还款本金m_jin=贷款总额sum/期数countm_jin=`echo "scale=2;($sum/$count)/1 " | bc -l`#定义未还本金r_jin(第一期应该是贷款总额)r_jin=$sumfor((i=1;i<=$count;i++))do#本月利息m_xi=剩余本金*月利率m_xi=`echo "scale=2;( $r_jin*$m_r)/1"|bc -l`#本月还款m_jinxi=月还本金m_jin+本月利息m_xim_jinxi=`echo "scale=2;( $m_jin+$m_xi)/1"|bc -l`#已还款本金jin=月还本金m_jin*期数ijin=`echo "scale=2;( $m_jin*$i)/1"|bc -l`#剩余本金r_jin=贷款总额sum-已还本金jinr_jin=`echo "scale=2;( $sum-$jin)/1"|bc -l`if [ $i -eq $count ]then#最后一月的还款额应该是每月还款本金+本月利息+剩余本金m_jinxi=`echo "scale=2;( $m_jin+$r_jin+$m_xi)/1"|bc -l`#最后一月的剩余本金应该是0r_jin=0fiecho "$i  $m_jinxi  $m_xi  $r_jin"done   
}xi()
{#每期还款m_jinxi=(贷款总额sum*月利率m_r*((1+月利率m_r)^期数count))/(((1+月利率m_r)^期数count)-1)m_jinxi=`echo "scale=2;(($sum*$m_r*((1+$m_r)^$count))/(((1+$m_r)^$count)-1))/1 " | bc -l`#定义未还本金r_jin(第一期应该是贷款总额)r_jin=$sumfor((i=1;i<=$count;i++))do#本期利息m_xi=剩余本金r_jin*月利率m_rm_xi=`echo "scale=2;( $r_jin*$m_r)/1"|bc -l`#本期本金m_jin=本期本息m_jinxi-本期利息m_xim_jin=`echo "scale=2;($m_jinxi-$m_xi)/1 " | bc -l`#未还本金r_jin=上期未还本金r_jin-本期应还本金m_jinr_jin=`echo "scale=2;($r_jin-$m_jin)/1 " | bc -l`if [ $i -eq $count ]then#最后一月本息m_jinxi=本期本金m_jin+未还本金r_jinm_jinxi=`echo "scale=2;($m_jin+$r_jin)/1 " | bc -l`#最后一月的剩余本金应该是0r_jin="0.00"fiecho "$i $m_jinxi $m_xi $r_jin"done
}case $type in1)jin;;2) xi;;*)exit 1;;
esac

更多推荐

shell习题100(十六)

本文发布于:2024-02-14 00:02:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761416.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:习题   shell   十六

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!