【 shell 编程 】第2篇 判断
创始人
2024-05-03 18:43:50
0

判断


文章目录

  • 判断
  • 一、条件测试
  • 二、流程控制
    • 1.单分支结构
    • 2.双分支结构
    • 3.多分支结构
    • 4.嵌套结构
  • 三、匹配模式


在这里插入图片描述


一、条件测试

格式:

格式1:test 条件表达式
格式2:[ 条件表达式 ]
格式3:[[ 条件表达式 ]]
注意:[] 中的条件表达式两边需要空格

1、字符串比较
[“字符串”=“字符串”]

=,==( 等于 )


[root@nfs 桌面]# [ "$USER" = "root" ];echo $?
0
[root@nfs 桌面]# [ "$USER" == "root" ];echo $?
0
[root@nfs ~]# su - guan
上一次登录:五 12月 30 14:33:12 CST 2022pts/0 上
[guan@nfs ~]$ [ "$USER" = "root" ];echo $?
1
[guan@nfs ~]$ [ "$USER" = "guan" ];echo $?
0

!=( 不等于 )

[root@nfs ~]# [ "$USER" = "root" ];echo $?
0
[root@nfs ~]# [ "$USER" != "guan" ];echo $?
0[root@nfs ~]# [ "$USER" = "guan" ];echo $?
1

-z:判断字符串长度是为0

[root@web1 ~]# var1=123
[root@web1 ~]# [ -z "$var1" ];echo $?
1
[root@web1 ~]# var2=
[root@web1 ~]# [ -z "$var2" ];echo $?
0

-n:判断字符串长度不是为0

[root@nfs ~]# var1=123
[root@nfs ~]# var2=
[root@nfs ~]# [ -n "$var1" ];echo $?
0
[root@nfs ~]# [ -n "$var2" ];echo $?
1

例子

[root@nfs 桌面]# vim test04.sh
[root@nfs 桌面]# bash test04.sh
请输入你的选择:[yes/no]yes
hello
[root@nfs 桌面]# bash test04.sh
请输入你的选择:[yes/no]no
heihei
[root@nfs 桌面]# cat test04.sh
#!/bin/bashread -p "请输入你的选择:[yes/no]" selectif  [ $select = "yes" ]
then
echo hello
else
echo heihei
fi

2、文件测试
[ 操作符 文件或目录 ]

[root@nfs ~]# ls /test
ls: 无法访问/test: 没有那个文件或目录
[root@nfs ~]# [ -d /test ];echo $?
1
[root@nfs ~]# [ -d /home ];echo $?
0
[root@nfs 桌面]# test -d /home   //-d 后跟一个目录
[root@nfs 桌面]# test -d /home;echo $?
0
[root@nfs 桌面]# ls
2022-12-28_file1.txt          ping.sh    VMwareTools-10.3.10-13959562.tar.gz
2022-12-28_file2.txt          test01.sh  vmware-tools-distrib
bash.sh                       test02.sh  yum.sh
file1                         test03.sh  zabbix-6.0.9.tar.gz
nginx-1.22.0                  test04.sh  zabbix.shell
nginx-1.22.0.tar.gz           test05.sh
percona-xtrabackup24.rpm.zip  test.sh
[root@nfs 桌面]# [ -f nginx-1.22.0 ];echo $?
1
[root@nfs 桌面]# [ -f 2022-12-28_file1.txt ];echo $?
0
[root@nfs 桌面]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2
[root@nfs 桌面]# ls /dev/sd* -l
brw-rw---- 1 root disk 8, 0 12月 28 21:28 /dev/sda
brw-rw---- 1 root disk 8, 1 12月 28 21:28 /dev/sda1
brw-rw---- 1 root disk 8, 2 12月 28 21:28 /dev/sda2
[root@nfs 桌面]# file /dev/sda
/dev/sda: block special
[root@nfs 桌面]# [ -b /dev/sda  ];echo $?
0[root@nfs 桌面]# ls -l file1
-rw-r--r-- 1 root root 78 12月 28 18:22 file1
[root@nfs 桌面]# chmod u+s file1
[root@nfs 桌面]# ls -l file1
-rwSr--r-- 1 root root 78 12月 28 18:22 file1
[root@nfs 桌面]# [ -u file1  ];echo $?
0
[root@nfs 桌面]# chmod u-s file1
[root@nfs 桌面]# ls -l file1
-rw-r--r-- 1 root root 78 12月 28 18:22 file1
[root@nfs 桌面]# [ -u file1  ];echo $?
1
-f filename:当filename 存在时返回真
-b filename:当filename 存在并且是块文件时返回真(返回0)
-d pathname:当pathname存在并且是一个目录时返回真
-h filename:当filename 存在并且是符号链接文件时返回真(或 -L filename)
-u pathname:当pathname指定的文件或目录存在并且设置了SUID位时返回真
-c filename:当filename 存在并且是字符文件时返回真
-e pathname:当由pathname 指定的文件或目录存在时返回真
-g pathname:当由pathname 指定的文件或者目录存在并且设置了SGID位时返回真
-k pathname:当由pathname 指定的文件或者目录存在并且设置了"粘滞" 位时返回真
-p filename:当filename 存在并且是命名管道时返回真
-r pathname:当由pathname指定的文件或目录存在并且可读时返回真
-s filename:当filename 存在并且文件大小大于0时返回真
-S filename:当filename 存在并且时socket 时返回真
-t fd :当fd时与终端设备相关联的文件描述符时返回真
-w pathname:当由pathname 指定的文件或目录存在并且返回真时
-x pathname:当由pathname 指定的文件或目录存在并且可执行时返回真
-O pathname:当由pathname 存在并且被当前进程的有效用户id的用户拥有时返回真(字母大写O)
-G pathname:当由pathname 存在并且属于当前进程的有效用户id的用户的用户组时返回真
file1 -nt file2:file1 比 file2 新时返回真

例子

[root@nfs 桌面]# vim test05.sh
[root@nfs 桌面]# bash test05.sh
请输入安装的目录:/test
你输入的目录不存在,开始创建。
你的目录 /test ,已创建。
程序已经开始安装
[root@nfs 桌面]# bash test05.sh
请输入安装的目录:/test
/test 目录已存在,安装程序开始 
[root@nfs 桌面]# 
[root@nfs 桌面]# ls /
backup  boot   dev  home  lib64  mnt  proc  run   srv  test  usr  webdata
bin     b.org  etc  lib   media  opt  root  sbin  sys  tmp   var  webroot[root@nfs 桌面]# cd /test
[root@nfs test]# [root@nfs 桌面]# cat test05.sh
#!/bin/bash
read -p "请输入安装的目录:" dir
if [ -d $dir ]thenecho "$dir 目录已存在,安装程序开始 "elseecho "你输入的目录不存在,开始创建。"mkdir $direcho "你的目录 $dir ,已创建。"echo "程序已经开始安装"fi
[root@nfs 桌面]# 

3、数值比较
[ 整数1 操作符 整数2 ]

[root@nfs 桌面]# id -u
0
[root@nfs 桌面]# su -guan
su: group uan does not exist
[root@nfs 桌面]# su - guan
上一次登录:五 12月 30 14:45:57 CST 2022pts/0 上
[guan@nfs ~]$ id -u  //id -u 打印出这个用户的id号
1001    
[guan@nfs ~]$ id --help
Usage: id [OPTION]... [USER]
Print user and group information for the specified USER,
or (when USER omitted) for the current user.-a             ignore, for compatibility with other versions-Z, --context  print only the security context of the current user-g, --group    print only the effective group ID-G, --groups   print all group IDs-n, --name     print a name instead of a number, for -ugG-r, --real     print the real ID instead of the effective ID, with -ugG-u, --user     print only the effective user ID-z, --zero     delimit entries with NUL characters, not whitespace;not permitted in default format--help		显示此帮助信息并退出--version		显示版本信息并退出如果不附带任何选项,程序会显示一些可供识别用户身份的有用信息。GNU coreutils online help: 
请向 报告id 的翻译错误
要获取完整文档,请运行:info coreutils 'id invocation'

操作符

[root@nfs test]# [ 1 -gt 2 ];echo $?  //大于
1
[root@nfs test]# [ 1 -lt 2 ];echo $?  //小于
0
[root@nfs test]# [ 1 -eq 2 ];echo $?  //等于
1
[root@nfs test]# [ 1 -ne 2 ];echo $?  //不等于
0
[root@nfs test]# [ 1 -ge 2 ];echo $?  //大于等于
1
[root@nfs test]# [ 1 -le 2 ];echo $?  //小于等于
0

C语言风格

[root@nfs test]# ((1<2));echo $?
0
[root@nfs test]# ((1>2));echo $?
1
[root@nfs test]# ((1==2));echo $?
1
[root@nfs test]# ((1>=2));echo $?
1
[root@nfs test]# ((1<=2));echo $?
0
[root@nfs test]# ((1!=2));echo $?
0
[root@nfs test]# vim test07.sh
[root@nfs test]# bash test07.sh
please input your score:59
不及格
[root@nfs test]# bash test07.sh
please input your score:100
及格
[root@nfs test]# cat test07.sh
#!/bin/bash
read -p "please input your score:" num
if [ $num -ge 60 ]thenecho "及格"elseecho "不及格"
fi

例子

[root@nfs 桌面]# vim test06.sh
[root@nfs 桌面]# bash test06.sh
admin
[root@nfs 桌面]# cp test06.sh /home/guan
[root@nfs 桌面]# su - guan
上一次登录:五 12月 30 16:36:46 CST 2022pts/0 上
[guan@nfs ~]$ ls
test06.sh
[guan@nfs ~]$ bash test06.sh 
user
[guan@nfs ~]$ su - root
密码:
上一次登录:五 12月 30 16:40:09 CST 2022pts/0 上
[root@nfs ~]# cd 桌面[root@nfs 桌面]# cat test06.sh
#!/bin/bash
num=$(id -u)
if [ $num -eq 0 ]thenecho "admin"elseecho "user"
fi

and 和 or
逻辑的(and) 与 (or)
&& 逻辑的 AND 的意思,-a也是这个意思,两个条件同时成立为真。
|| 逻辑的OR的意思, -o也是这个意思,两个条件一个成立为真。

例子

[root@nfs test]# num=61;[ $num -gt 60 -a $num -lt 80 ];echo $?
0
[root@nfs test]# num=59;[ $num -gt 60 -a $num -lt 80 ];echo $?
1
[root@nfs test]# num=59;[ $num -gt 60 -o $num -lt 80 ];echo $?
0

多种表达式

[root@nfs test]# [ 1 -lt 2 -a 5 -gt 10 ];echo $?
1
[root@nfs test]# [ 1 -lt 2 -o 5 -gt 10 ];echo $?
0

二、流程控制

1.单分支结构

语法:

if  条件测试
then 命令序列
fi

例子
需求:编写一个脚本,由用户输入用户名,如果用户名不存在,则创建该用户,并设置密码为123456

[root@nfs test]# vim test08.sh
[root@nfs test]# bash test08.sh
please input a username:tom
123456 | passwd --stdin tom &> /dev/null
tom create finished,the password is 123456
[root@nfs test]# id tom
uid=1006(tom) gid=1006(tom) 组=1006(tom)
[root@nfs test]# cat test08.sh
#!/bin/bash
read -p "please input a username:" nameid $name &> /dev/nullif [ $? -ne 0 ];thenuseradd $nameecho "123456 | passwd --stdin $name &> /dev/null"echo "$name create finished,the password is 123456"
fi
[root@nfs test]# id guan
uid=1001(guan) gid=1001(guan) 组=1001(guan)
[root@nfs test]# bash test09.sh
please input a username:guan   //该用户已存在,所以不会进行创建
[root@nfs test]# bash test09.sh
please input a username:lihua
123456 | passwd --stdin lihua &> /dev/null
lihua create finished,the password is 123456
[root@nfs test]# cat test09.sh
#!/bin/bash
read -p "please input a username:" nameif ! id $name &> /dev/nullthenuseradd $nameecho "123456 | passwd --stdin $name &> /dev/null"echo "$name create finished,the password is 123456"
fi

2.双分支结构

语法:

if  条件测试
then 命令序列
else 
fi

例子1
需求:编写一个脚本,由用户输入用户名,如果用户名不存在,则创建该用户,并设置密码为123456;否则,提示用户已存在

[root@nfs test]# vim test10.sh
[root@nfs test]# bash test10.sh
please input a username:tom
tom already exist!
[root@nfs test]# userdel -r tom
[root@nfs test]# bash test10.sh
please input a username:tom
123456 | passwd --stdin tom &> /dev/null
tom create finished,the password is 123456
[root@nfs test]# cat test10.sh
#!/bin/bash
read -p "please input a username:" nameif ! id $name &> /dev/nullthenuseradd $nameecho "123456 | passwd --stdin $name &> /dev/null"echo "$name create finished,the password is 123456"elseecho "$name already exist!"
fi[root@nfs test]# 

例子2
需求:编写一个脚本,由用户输入用户名,判断该用户的uid及gid,如果相同,则显示Good user;否则显示 Bad user。

[root@nfs test]# vim test11.sh
[root@nfs test]# id -u guan
1001
[root@nfs test]# id -g guan
1001
[root@nfs test]# id  guan
uid=1001(guan) gid=1001(guan) 组=1001(guan)
[root@nfs test]# bash test11.sh
please input username:guan
Good user.
[root@nfs test]# usermod -g 1008 guan
[root@nfs test]# id  guan
uid=1001(guan) gid=1008(tom) 组=1008(tom)
[root@nfs test]# bash test11.sh
please input username:guan
test11.sh:行9: echoBad user.
[root@nfs test]# cat test11.sh
#!/bin/bash
read -p "please input username:" name
user_id=`id -u $name`
group_id=`id -g $name`if [ $user_id -eq $group_id ];thenecho "Good user."
elseecho "Bad user."
fi

3.多分支结构

语法:

if  条件测试1
then 命令序列
elif 条件测试2
then 命令序列
elif 条件测试3
then 命令序列
else 命令序列
fi
[root@nfs test]# vim test12.sh
[root@nfs test]# bash test12.sh
This is night
[root@nfs test]# date +%H
19
[root@nfs test]# cat test12.sh
#!/bin/bash
#姓名
#时间
#目的
hour=`date +%H`if [ $hour -ge 6 -a $hour -le 10 ];thenecho "This is morning"
elif [ $hour -ge 11 -a $hour -le 13 ];thenecho "This is noon"
elif [ $hour -ge 13 -a $hour -le 18 ];thenecho "This is afternoon"
elseecho "This is night"
fi

4.嵌套结构

语法:

if  条件测试 then 命令序列if 条件测试 then 命令序列else  命令序列fi
else 命令序列
fi
[root@nfs test]# vim test13.sh
[root@nfs test]# bash test13.sh
please input username: luo
please input your new user password:guan123456
guan123456 | passwd --stdin luo &> /dev/null
luo create finished,password is guan123456 
[root@nfs test]# cat test13.sh
#!/bin/bash
read -p "please input username: " name
id $name &> /dev/nullif [ $? -eq 0 ];thenecho "$name already exist!"elseread -p "please input your new user password:" passif [ ${#pass} -ge 7 ];thenuseradd $nameecho "$pass | passwd --stdin $name &> /dev/null"echo "$name create finished,password is $pass "elseecho "user is not created,beause password is unqualified!"fi
fi[root@nfs test]# bash test13.sh
please input username: luo
luo already exist!
[root@nfs test]# bash test13.sh
please input username: abc
please input your new user password:123
user is not created,beause password is unqualified!

三、匹配模式

1.case 语法结构:

case 变量 in
模式1)
命令序列1
;;
模式2)
命令序列2
;;
模式3)
命令序列3
;;
*)
无匹配后命令序列
esac

例子1

[root@nfs test]# vim test14.sh
[root@nfs test]# bash test14.sh
请输入你的操作系统:linux
windows[root@nfs test]# bash test14.sh
请输入你的操作系统:ubuntu
other...
[root@nfs test]# cat test14.sh
#!/bin/bash
read -p "请输入你的操作系统:" str
case $str in
windows)
echo "linux"
;;
linux)
echo "windows"
;;
*)
echo "other..."
esac#read -p "请输入你的操作系统:" str
#if [ $str = windows ];then
#	echo "linux"
#elif [ $str = linux ];then
#	echo "windows"
#else
#	echo "other..."
#fi

例子2

[root@nfs test]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@nfs test]# cat /etc/redhat-release |awk '{print $4}'
7.6.1810
[root@nfs test]# cat /etc/redhat-release |awk '{print $4}' | awk -F"." '{print $1}'
7
[root@nfs test]# cat test15.sh
#!/bin/bash
#localyumos_version=`cat /etc/redhat-release |awk '{print $4}' | awk -F"." '{print $1}'`
if [ "$os_version" = "7" ];thencat > /etc/yum.repos.d/centos7.repo <<-EOF[centos]name=centos7baseurl=ftp://192.168.200.182/contos7u3gpgcheck=0EOF	yum makecacheyum repolistecho "yum configuration completed!"
fi
if [ "$os_version" = "6" ];thencat > /etc/yum.repos.d/centos6.repo <<-EOF[centos]name=centos6baseurl=ftp://192.168.200.182/contos6u3gpgcheck=0EOF     yum makecacheyum repolistecho "yum configuration completed!"
fi
if [ "$os_version" = "5" ];thencat > /etc/yum.repos.d/centos5.repo <<-EOF[centos]name=centos5baseurl=ftp://192.168.200.182/contos5u3gpgcheck=0EOF     yum makecacheyum repolistecho "yum configuration completed!"
fi[root@nfs test]# vim test16.sh
[root@nfs test]# cat test16.sh
#!/bin/bash
#localyumos_version=`cat /etc/redhat-release |awk '{print $4}' | awk -F"." '{print $1}'`
case "$os_version" in 
"7")
cat > /etc/yum.repos.d/centos7.repo <<-EOF[centos]name=centos7baseurl=ftp://192.168.200.182/contos7u3gpgcheck=0EOF	yum makecacheyum repolistecho "yum configuration completed!";;
"6")
cat > /etc/yum.repos.d/centos6.repo <<-EOF[centos]name=centos6baseurl=ftp://192.168.200.182/contos6u3gpgcheck=0EOF     yum makecacheyum repolistecho "yum configuration completed!";;
"5")
cat > /etc/yum.repos.d/centos5.repo <<-EOF[centos]name=centos5baseurl=ftp://192.168.200.182/contos5u3gpgcheck=0EOF     yum makecacheyum repolistecho "yum configuration completed!";;
*)echo "没有找到对应的版本"
esac
[root@nfs test]# 

例子3

[root@nfs test]# ls /home
guan  Guan  guanguan  Guanguan  lihua  luo  tom  userA  userC[root@nfs test]# vim test18.sh
[root@nfs test]# bash test18.sh
please input username:lihua
are you sure?[yes/no]:yes
lihua is deleted!
[root@nfs test]# ls /home
guan  Guan  guanguan  Guanguan  luo  userA  userC[root@nfs test]# vim test18.sh
[root@nfs test]# cat test18.sh
#!/bin/bash
#1请输入删除的用户名:
read -p "please input username:" user
#2输出用户名ID
id $user &> /dev/null
#3判断用户是否存在
if [ $? -ne 0 ];thenecho "no such user: $user"exit 1
fi
#4请用户确认是否删除
read -p "are you sure?[yes/no]:" action
case "$action" in 
Y|y|YES|yes)
userdel -r $user
echo "$user is deleted!"
;;
*)
echo "thank you"
;;
esac
[root@nfs test]# cat test17.sh
#!/bin/bash
#name
#time
#1请输入删除的用户名:
read -p "please input a username :" uesr
#2输出用户名ID
id $user &> /dev/null
#4判断用户是否存在
if [ $? -ne 0 ];thenecho "no such user: $user"exit 1
fi
#3请用户确认是否删除 
read -p "are you sure?[yes/no]: " action
if [ "$action" = "yes" -o "$action" = "y" -o "$action" = "Y" ];thenuserdel -r  $userecho "$user is deleted!"
elseecho "thank you"
fi

例子4

[root@nfs test]# bash systemmanage.sh
h-help
f-disk partation
d-filesystem mount
m-memory
u-system load
q-exit
please input ( h for help):h
error
h-help
f-disk partation
d-filesystem mount
m-memory
u-system load
q-exit
please input ( h for help):mtotal        used        free      shared  buff/cache   available
Mem:           1819         891          85          83         842         629
Swap:          2047          16        2031
h-help
f-disk partation
d-filesystem mount
m-memory
u-system load
q-exit
please input ( h for help):d
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        17G  7.4G  9.7G   44% /
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
tmpfs                   tmpfs     182M   28K  182M    1% /run/user/0
h-help
f-disk partation
d-filesystem mount
m-memory
u-system load
q-exit
please input ( h for help):q
[root@nfs test]# cat systemmanage.sh
#!/bin/bash
#
while :
docat <<-EOF
h-help
f-disk partation
d-filesystem mount
m-memory
u-system load
q-exit
EOF#
read -p "please input ( h for help):" action
case "$action" in
f)fdisk -l
;;
d)df -hT
;;
m)free -m
;;
u)uptime
;;
q)exit
;;
*)echo "error"
;;
esacdone

例子5

[guan@nfs ~]$ ssh-keygen    //做免密
Generating public/private rsa key pair.
Enter file in which to save the key (/home/guan/.ssh/id_rsa): 
Created directory '/home/guan/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/guan/.ssh/id_rsa.
Your public key has been saved in /home/guan/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:1yN8meQaoTZIydRAqdVW3cIr6uwVv9fv/TX3mbAjeQ0 guan@nfs
The key's randomart image is:
+---[RSA 2048]----+
|     .+= ..o .   |
|     oo.+   + .  |
|     o+.  . .o   |
|    .. . o.=.o   |
|      . S.*.B    |
|       ..o B E   |
|       o  o o.ooo|
|        o. o ++.X|
|       ..   +o.+O|
+----[SHA256]-----+
[guan@nfs ~]$ ssh-copy-id 192.168.200.184
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/guan/.ssh/id_rsa.pub"
The authenticity of host '192.168.200.184 (192.168.200.184)' can't be established.
ECDSA key fingerprint is SHA256:ygT6h9ejxNmaemQtyIzVYHEbRko0BaG4PstS2LTavDM.
ECDSA key fingerprint is MD5:88:1f:c4:d2:fe:73:b9:1f:7f:26:cd:2c:ba:ad:5c:b5.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.200.184's password: 
Permission denied, please try again.
root@192.168.200.184's password: 
Permission denied, please try again.
guan@192.168.200.184's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
Number of key(s) added: 1Now try logging into the machine, with:   "ssh '192.168.200.184'"
and check to make sure that only the key(s) you wanted were added.[root@nfs test]# bash jump.sh  //运行脚本即可跳转服务器
1.web1
2.web2
3.nfs
4.quit
please input a num :1
The authenticity of host 'web1 (192.168.200.184)' can't be established.
ECDSA key fingerprint is SHA256:ygT6h9ejxNmaemQtyIzVYHEbRko0BaG4PstS2LTavDM.
ECDSA key fingerprint is MD5:88:1f:c4:d2:fe:73:b9:1f:7f:26:cd:2c:ba:ad:5c:b5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'web1' (ECDSA) to the list of known hosts.
Last login: Sat Dec 31 15:46:59 2022 from 192.168.200.182
[root@web1 ~]# exit
登出
Connection to web1 closed.
1.web1
2.web2
3.nfs
4.quit
please input a num :3
The authenticity of host 'nfs (192.168.200.182)' can't be established.
ECDSA key fingerprint is SHA256:ygT6h9ejxNmaemQtyIzVYHEbRko0BaG4PstS2LTavDM.
ECDSA key fingerprint is MD5:88:1f:c4:d2:fe:73:b9:1f:7f:26:cd:2c:ba:ad:5c:b5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'nfs,192.168.200.182' (ECDSA) to the list of known hosts.
root@nfs's password: 
Last login: Sat Dec 31 15:42:16 2022
[root@nfs ~]# exit
登出
Connection to nfs closed.
1.web1
2.web2
3.nfs
4.quit
please input a num :4[root@nfs test]# cat jump.sh
#!/bin/bash
#定义目标主机
web1=192.168.200.184
web2=192.168.200.183
nfs=192.168.200.182#跳转菜单不退出
while :
do#打印跳转菜单
cat <
[root@nfs ~]# vim .bash_profile
[root@nfs ~]# cat .bash_profile  //将脚本加入到开机自启文件会自动帮你执行脚本文件
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATH
/root/test/jump.sh[root@nfs test]# exit
登出
[guan@nfs ~]$ exit
登出Connection closed.Disconnected from remote host(192.168.200.182) at 16:33:36.Type `help' to learn how to use Xshell prompt.
[C:\~]$ ssh root@192.168.200.182Connecting to 192.168.200.182:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.Last login: Sat Dec 31 15:59:12 2022 from 192.168.200.182
-bash: /root/test/jump.sh: 权限不够
[root@nfs test]# ls -l
-rw-r--r-- 1 root root 366 12月 31 15:35 jump.sh[root@nfs test]# chmod +x jump.sh 
[root@nfs test]# ls -l jump.sh 
-rwxr-xr-x 1 root root 366 12月 31 15:35 jump.sh
[C:\~]$ ssh root@192.168.200.182Connecting to 192.168.200.182:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.Last login: Sat Dec 31 16:40:47 2022 from 192.168.200.1
1.web1
2.web2
3.nfs
4.quit
please input a num :4
[root@nfs ~]# 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...