Ubuntu-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,并运⾏benchmark10次,新建⽂件夹,并输出,然后删除parameters.dat⽂件。
#创建⽂件parameter.dat
touch parameters.dat
#将的内容复制到parameter.dat中
cat >>parameters.dat
for((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 choice
case$choice in
1)
echo"please input the filename:"
read filename
echo"please input the zip code"
read password
`zip -rP ${password} ${filename}.zip ${filename}`
echo"zip successfully";;
2)
echo"please input the filename"
read filename
echo"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/p IP password 时保证密码正确,那么就通过 ssh 连接到该 IP 主机,并保持登陆。
第⼀部分代码:
#!/bin/bash
#test3.sh
#create user and delete user
echo -e "please input userfilename:"
read userfile
echo -e "please input the passfile"
read passfile
echo -e "create:create new users by $userfile and $passfile\ndelete:delete all users by $userfile"
read choice
export username
case$choice in
'create')
if[! -e $userfile]||[! -e $passfile]
then
echo"$userfile of $passfile do not exist"
exit 1
fi
#user number
line1=`cat $userfile|wc -l`
linux命令及shell编写#passwd number
line2=`cat $passfile|wc -l`
#judge the user number and passwd number echo"line1:$line1"
echo"line2:$line2"
if[$line1 -ne $line2]
then
echo"user number is not equal with passwd number" exit 1
fi
#read userfile
for((i=1;i<=3;i++))
do
read username[i]
`sudo useradd ${username[i]}`
done<${userfile}
#read passwdfile
for((i=1;i<=3;i++))
do
read password[i]
`echo ${username[i]}:${password[i]}|sudo chpasswd` echo"${username[i]}⽤户创建成功"
done<${passfile};;
'delete')
if[ -e $suerfile]
then
echo"deleting"
else
echo"file do not exist"
exit 1
fi
for((i=1;i<=3;i++))
do
read username
echo"${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⽂件夹中所有⽂件重定向到⼀个新的⽂件中。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。