shell2

实验12.

case语句

[[email protected] ~]# vim 大哥是个apple

case $1 in

apple)

echo banana

;;

banana)

echo apple

;;

*)

echo error

esac

测试:

[[email protected] ~]# sh 大哥是个apple apple

banana

[[email protected] ~]# sh 大哥是个apple banana

apple

[[email protected] ~]# sh 大哥是个apple yz

error

实验13.

expect自动应答脚本(输入ip和密码,制动远程连接主机)

[[email protected] ~]# yum install expect -y

Loaded plugins: langpacks

rhel_dvd                                                 | 4.1 kB     00:00

Resolving Dependencies

.....

[[email protected] mnt]# vim ty16.exp

#!/usr/bin/expect

set IP [ lindex $argv 0 ]

set PASS [ lindex $argv 1 ]

spawn ssh [email protected]$IP

expect {

"yes/no"

{send "yes\r";exp_continue}

"password:"

{send "$PASS\r"}

}

interact

[[email protected] mnt]# /mnt/ty16.exp 172.25.254.118 redhat

spawn ssh [email protected]

The authenticity of host ‘172.25.254.118 (172.25.254.118)‘ can‘t be established.

ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added ‘172.25.254.118‘ (ECDSA) to the list of known hosts.

[email protected]‘s password:

Last login: Wed Dec 14 21:58:09 2016 from 172.25.254.18

[[email protected] ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 172.25.254.118  netmask 255.255.255.0  broadcast 172.25.254.255

inet6 fe80::5054:ff:fe00:120b  prefixlen 64  scopeid 0x20<link>

ether 52:54:00:00:12:0b  txqueuelen 1000  (Ethernet)

RX packets 16575  bytes 1458237 (1.3 MiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 9690  bytes 1204275 (1.1 MiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

实验14.

教室11-25主机开着的显示主机名,未开就显示关闭

[[email protected] mnt]# vim ty16.exp

#!/usr/bin/expect

set timeout 2

set IP [ lindex $argv 0 ]

set PASS [ lindex $argv 1 ]

set COMM [ lindex $argv 2 ]

spawn ssh [email protected]$IP $COMM

expect {

"yes/no"

{send "yes\r";exp_continue}

"password:"

{send "$PASS\r"}

{send "$COMM\r"}

}

expect eof

[[email protected] mnt]# vim ty17.sh

#!/bin/bash

for NUM in {17..21}

do

ping -c1 -w1 172.25.254.$NUM &> /dev/null && (

/mnt/ty16.exp 172.25.254.$NUM westos hostname | grep -E "spawn|root|denied" -v )

done

[[email protected] mnt]# sh ty17.sh

foundation20.ilt.example.com

实验15.

用户的密码匹配实验

[[email protected] mnt]# vim ty20.sh

#!/bin/bash

if

[ -n "$1" -a -n "$2" ]

then

if

[ -e "$1" -a -e "$2" ]

then

MAXUSER=`wc -l $1 | cut -d " " -f 1`

MAXPASS=`wc -l $2 | cut -d " " -f 1`

if

[ "$MAXUSER" -eq "$MAXPASS" ]

then

for NUM in $( seq 1 $MAXUSER )

do

USERNAME=`sed -n ${NUM}p $1`

PASSWORD=`sed -n ${NUM}p $2`

CKUSER=`getent passwd $USERNAME`

[ -z "$CKUSER" ]&&(

useradd $USERNAME

echo $PASSWORD | passwd --stdin $USERNAME

)||echo "$USERNAME exist !!"

done

else

echo $1 and $2 have different lines

fi

elif

[ ! -e "$1" ]

then

echo "ERROR:$1 is not exist"

else

echo "ERROR:$2 is not exist"

fi

else

echo "ERROR:Please input userfile and password file after command !!"

fi

[[email protected] mnt]# sh ty20.sh  userfile passfile

Changing password for user westos.

passwd: all authentication tokens updated successfully.

Changing password for user redhat.

passwd: all authentication tokens updated successfully.

yz exist !!

##引用##

引用有三种类型

1.弱引用

将字符串放置在双引号中,保留字符串中所有字符的文字值,$、`、\和!字符除外。

echo "can I have a $FRUIT"

echo "the current time is $(date+%)."

2.强引用

将字符串放置在单引号中,保留字符串中所有字符的文字值,同时禁用所有扩展。

echo "make$$$Fast"

rm‘untitled folder‘

3.转义

非引用的\是转义字符。它保留了下一个字符的文字值。如\$PATH是确切的字符串$PATH,而不是PATH变量的内容

echo make\$\$\$Fast\!

ls untitled\folder

##shell变量##

若要定义或 指定值:

FRUIT=apple

若要参考或使用变量:

$FRUIT

${FRUIT}

test 和中括号的作用一样

-z为空

-n不为空

时间: 2024-10-21 09:54:14

shell2的相关文章

shell--2、Shell 变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字(可用help命令查看保留关键字). 除了显式地直接赋值,还可以用语句给变量赋值,如: for file in `ls /etc` 以上语句将

shell--2.shell数组

shell 数组 (1)定义数组 shell中,用括号表示数组,数组元素用空格分开,定义数组的一般形式 arrt_name=(val1 val2 val3) 或者 arry_name=(val1 var2 val3 val4 ) 或者 arry_name[0]=val1 arry_name[3]=val3 可以不使用连续的下标,而且下标范围没有限制 (2)读取数组 ${arry_name[0]} 使用@读取数组所有的元素 arry[1]=10 arry[3]=20 echo ${arry[@]}

shell-2.shell定义变量

Shell 变量 ${#var} 可计算出变量值的长度: 1.变量的定义 变量名="赋值给变量的内容"  (字符串)变量名='赋值给变量的内容'  (字符串)变量名=数值                (数值) [注意]:变量名和等号之间不能有空格 2.变量名的命名规范·首个字符必须为字母(a-z,A-Z).·不能使用标点符号.·中间不能有空格,可以使用下划线(_),最好不要用特殊字符,可读性差.·不要使用bash里的关键字 3.[实例]name="yuanji"a

shell-2

关于 Tcl 和 Expect 的语法,请参考 Unix/Linux 平台任务的自动化相关部分. QUOTE: 例 1: 下面是一个 telnet 到指定的远程机器上自动执行命令的 Expect 脚本, 该脚本运行时的输出如下: # /usr/bin/expect sample_login.exp root 111111 spawn telnet 10.13.32.30 7001 Trying 10.13.32.30... Connected to 10.13.32.30. Escape cha

自学Linux Shell2.1-进入shell命令行

点击返回 自学Linux命令行与Shell脚本之路 2.1-进入shell命令行 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多种目前流行的文件系统,如EXT2. EXT3. FAT. FAT32. VFAT和ISO9660. 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9172448.html

自学Linux Shell2.2-GHOME Terminal仿真器

点击返回 自学Linux命令行与Shell脚本之路 2.2-GHOME Terminal仿真器 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多种目前流行的文件系统,如EXT2. EXT3. FAT. FAT32. VFAT和ISO9660. 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9172516.html

【译】RabbitMQ:工作队列(Work Queue)

在第一篇我们写了两个程序通过一个命名的队列分别发送和接收消息.在这一篇,我们将创建一个工作队列在多个工作线程间分发耗时的工作任务. 工作队列的核心思想是避免立刻处理资源密集型任务导致必须等待其执行完成.相反的,我们安排这些任务在稍晚的时间完成.我们将一个任务封装为一个消息并把它发送到队列中.一个后台的工作线程将从队列中取出任务并最终执行.当你运行多个工作线程,这些任务将在这些工作线程间共享. 这个概念对于在一个HTTP请求中处理复杂任务的Web应用尤其有用. 准备工作 在前一篇中,我们发送了一条

MongoDB管理

前几篇文章都是从开发和使用的角度了解了MongoDB的各个知识点,这篇文章将从MongoDB管理的角度入手,了解MongoDB管理所要了解的基本知识. 数据库命令 在前面几篇文章中,已经接触了一些数据库命令,例如文档.索引的操作. 在MongoDB shell中,可以使用runCommand()来传入并执行一个命令文档.例如 > db.runCommand({"getLastError":1}) { "n" : 0, "connectionId&qu

linux基本知识2

vi/vim工具使用 vi三种模式: 1.浏览模式(命令模式) 2.输入模式 3.末行模式 三种模式切换: 浏览模式(命令模式)    按"i" "a"      输入模式 输入模式   按"esc"        浏览模式(命令模式) 浏览模式(命令模式)    按shif+:      末行模式 浏览模式经常使用的命令: 删除一行  dd 删除多行  ndd (n=1,2,3) 复制一行  yy 复制多行  nyy (n=1,2,3) 粘贴