文章目录

  • 实验一:利用数据生成程序熟练掌握Shell脚本对文件夹的批处理
  • 实验二:在Linux环境下编写一个压缩和解压缩的小工具
  • 实验三:在Linux下利用case语句编写脚本,实现建立用户和删除用户的功能,过ssh连接到IP主机并保持登录的功能。
  • 实验四:在Linux下实现一个文件及文件夹操作的Shell脚本

实验一:利用数据生成程序熟练掌握Shell脚本对文件夹的批处理

1.benchmark为一个可执行文件,用于生成我们需要的数据集,运行该文件的命令为./benchmark。
该程序可执行文件的输入文件为该文件所在目录下的parameters.dat,输出文件为statistics.dat,comunity.dat,network.dat,且该程序每次运行生成的数据集不同。
2.parameters.dat中包含的参数为number, averagePower, maxPower, moreno, morenO, mix,max, min,存放格式如parameters.dat所示。
3.现我们需要写一个脚本,完成如下工作。
(1)生成parameters.dat文件,用写入的方式将参数写入该文件。
(2)在相同参数下运行benchmark文件10次,并根据参数和次数新建文件夹,文件夹名字如:1000_10_30_2_1_0.3_3_16_10,最后的数字代表第多少次生成。
(3)每次产生输出文件时将三个输出文件存储在不同的文件夹,并删除该次的参数存放文件:parameters.dat文件。

#!/bin/bash
#test1.sh
#将parameter.dat.txt数据写入文件parameter.dat,并运行benchmark10次,新建文件夹,并输出,然后删除parameters.dat文件。#创建文件parameter.dat
touch parameters.dat#将parameter.dat.txt的内容复制到parameter.dat中
cat parameters.dat.txt>>parameters.datfor((i=1;i<=10;i++))
do`./benchmark``mkdir 1000_10_30_2_1_0_0.3_3_16_${i}``mv ./statistics.dat 1000_10_30_2_1_0_0.3_3_16_${i}/statistics.dat``mv ./community.dat 1000_10_30_2_1_0_0.3_3_16_${i}/community.dat``mv ./network.dat 1000_10_30_2_1_0_0.3_3_16_${i}/network.dat`
done
rm -rf parameters.dat

运行截图

实验二:在Linux环境下编写一个压缩和解压缩的小工具

要求:压缩的时候可以由用户输入密码,解压缩的时候需要提供密码才能解压缩。

#!/bin/bash
#test2.sh
#encode to zip or unzip file
echo -e '1.zip flle\n2.unzip file\n'read choicecase $choice in1)echo "please input the filename:"read filenameecho "please input the zip code"read password`zip -rP ${password} ${filename}.zip ${filename}`echo "zip successfully";;2)echo "please input the filename"read filenameecho "please input the zip code"read password`unzip -P ${password} ${filename}`echo "unzip successfully";;
esac

运行截图:

实验三:在Linux下利用case语句编写脚本,实现建立用户和删除用户的功能,过ssh连接到IP主机并保持登录的功能。

实验第一部分实现的功能为:
1.执行create时根据userfile和passfile建立用户。
2.执行delete时根据userfile删除用户。
实验第二部分实现的功能为:
1.执行:/mnt/auto_connect.exp IP password 时保证密码正确,那么就通过 ssh 连接到该 IP 主机,并保持登陆。

第一部分代码:

#!/bin/bash
#test3.sh
#create user and delete userecho -e "please input userfilename:"
read userfileecho -e "please input the passfile"
read passfileecho -e "create:create new users by $userfile and $passfile\ndelete:delete all users by $userfile"
read choiceexport usernamecase $choice in'create')if [ ! -e $userfile ] || [ ! -e $passfile ]thenecho "$userfile of $passfile do not exist"exit 1fi#user numberline1=`cat $userfile|wc -l`#passwd numberline2=`cat $passfile|wc -l`#judge the user number and passwd numberecho "line1:$line1"echo "line2:$line2"if [ $line1 -ne $line2 ]then echo "user number is not equal with passwd number"exit 1fi#read userfilefor((i=1;i<=3;i++))do read username[i]`sudo useradd ${username[i]}`done<${userfile}#read passwdfilefor((i=1;i<=3;i++))doread password[i]`echo ${username[i]}:${password[i]} | sudo chpasswd`echo "${username[i]}用户创建成功"done<${passfile};;'delete')if [ -e $suerfile ]thenecho "deleting"elseecho "file do not exist"exit 1fifor((i=1;i<=3;i++))doread usernameecho "${username}用户删除成功"`sudo userdel ${username}`done<$userfile;;
esac
echo "successfully"

第二部分代码:
需要主机配置ssh环境

#!/bin/bash
#test3_plus.sh
#于主机建立ssh连接
/usr/bin/expect << EOF
spawn ssh root@$1
expect {"yes/no" { send "yes\r";exp_continue }  "password" { send "$2\r" }
}
interact
EOF

运行截图:
第一部分:


第二部分截图:

实验四:在Linux下实现一个文件及文件夹操作的Shell脚本

1.新建一个test文件夹,在下面新建10文件夹,每一个文件夹下新建一个txt文件,并写入内容。
2.获取目录下所有文件的文件名。(包括路径)
3.将test文件夹下10个文件夹下的文件复制到test文件夹下的data文件夹中,将data文件夹中所有文件重定向到一个新的文件中。

cd `dirname $0`mkdir testcd ${PWD}/test#打印当前路径
echo ${PWD}for((i=0;i<10;i++))
do#新建文件夹eval "mkdir" "test${i}"#新建文件touch test${i}/new${i}.txt#写入内容ls -l>test${i}/new${i}.txt
donetouch filenames.txtfor((i=0;i<10;i++))
do#进入目标文件夹cd test${i}#将当前路径写入filenames.txtecho ”$PWD”>>../filenames.txt#返回上级目录cd ..
donemkdir datafor((i=0;i<10;i++))
do#移动文件夹mv test${i}/new${i}.txt data`cat data/new${i}.txt>>newAll.txt`
done
#返回上级目录
cd ..





Ubuntu-Shell编程大作业相关推荐

  1. ubuntu shell 编程学习

    基础知识 1.开头#!/bin/bash (这句话必须放在文件的第一行,符号#!用来告诉系统它后面的参数是用来执行该文件的程序.(可以运行echo $SHELL来看你的系统是使用那一类shell, 比 ...

  2. 3D游戏编程 大作业 逃生

    前言 这次的作业是在智能巡逻兵的基础上,改的一个新游戏.本来第七次作业想要效仿学长的3d大作,没想到各种fsm,欧拉角的应用之类的看得我发蒙:之后照着抄也是抄出一堆bug,不得已只好随便敷衍一下,做个 ...

  3. 【2020学年】电子科大Linux高级环境编程大作业

    文章目录 作业设计要求 作业报告要求 作业提交要求 知识点 作业设计要求 总体要求 linux环境下,采用C或C++ 存储一张表,然后能对该表进行查询.添加等操作 上述功能以API的形式提供给应用使用 ...

  4. 函数部分编程大作业(持续更新)

    1),启动程序,首页面应该显示成如下格式:     欢迎来到博客园首页     1:请登录     2:请注册     3:文章页面     4:日记页面     5:评论页面     6:收藏页面 ...

  5. matlab 元编程,北航有限元编程大作业(Matlab)

    %****************** 有 限 元 编 程 作 业 ***************** y=1; while y~=0 x=input('请选择单元类型:1 为二力杆单元:2 为平面刚 ...

  6. C语言实现电子词典(网络编程大作业)

    项目要求: 登录注册功能,不能重复登录,重复注册 单词查询功能 历史记录功能,存储单词,意思,以及查询时间 基于TCP,支持多客户端连接 采用数据库保存用户信息与历史记录 将dict.txt的数据导入 ...

  7. 江南大学C语言大作业,TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc...

    TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc TCP/IP协议编程大作业 课题名称 基于TCP的网络通信 专 业 计算机科学与技术 班 级 计算机1206 学 号 103041 ...

  8. linux的shell编程课设,linux课程设计-shell编程.doc

    linux课程设计-shell编程.doc 还剩 18页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: fido ...

  9. Linux学习(十四)---大数据定制篇Shell编程

    文章目录 一.为什么要学习shell编程 二.Shell 是什么 三.shell 编程快速入门-Shell 脚本的执行方式 3.1 脚本格式要求 3.2 编写第一个 Shell 脚本 3.3 脚本的常 ...

最新文章

  1. 拒绝从入门到放弃_《Openstack 设计与实现》必读目录
  2. LDAP和Implementation
  3. idhttpserver的使用方法
  4. 在centos上搭建svn服务器
  5. pointnet与pointnet++
  6. 将redis加入到elk日志系统里
  7. 数据结构-排序-分配类排序-知识点总结归纳3
  8. LeetCode 66 加一
  9. php 断点续传 暂停,PHP 断点续传实例详解
  10. linux定时任务生产java服务无法执行问题群友案例
  11. 利用pushState开发无刷页面切换
  12. java 常用类 练习_Java常用类之String类练习
  13. 初学习C语言的小Tip
  14. ssh2的application.xml配置文件配置详解
  15. Css动画效果旋转图片
  16. JSP时间TimeControl
  17. 手绘风格的 JS 图表库:Chart.xkcd
  18. 国家司法考试(法考)成功上岸前辈备考经验分享
  19. 通过云效 CI/CD 实现微服务全链路灰度
  20. Didn't find class android.support.v7.widget.RecyclerView 解决办法 ———————————————— 版权声明:本文为CSDN博主「eag

热门文章

  1. ubuntu查看显存占用信息
  2. android 手机 跑分榜,安兔兔发布8月安卓手机性能榜 第一名平均跑分646730分
  3. 台式计算机2017排行分析,台式电脑处理器哪个好?最新台式机CPU天梯图2017年10-11月版本...
  4. 如何删除idea里面创建的工程项目
  5. 配音这么火爆,声音不好听怎么配音
  6. 买房就要买“抗疫房”,码农亲自卖
  7. 优信年营收16亿:亏损3亿 已与蔚来资本及58集团签署股权协议
  8. poi设置行距固定磅数
  9. Android设备Root检测方法
  10. 使用cmd运行java出现错误:编码GBK 的不可映射字符