内容一:判断 Linux 是 BIOS 还是 EFI 的方法
# ls -ld /sys/firmware/efi
(补充:如果 /sys/firmware/efi 目录存在,则代表系统是 EFI,否则系统是 BIOS)
内容二:判断 Linux 是 BIOS 还是 EFI 的脚本
# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
# ls -ld /sys/firmware/efi
(补充:如果 /sys/firmware/efi 目录存在,则代表系统是 EFI,否则系统是 BIOS)
# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
客户端电脑
外网服务器
内网服务器
客户端电脑 外网服务器 内网服务器
内网服务器建立到外网服务器的 SSH 通道
客户端电脑通过 SSH 外网服务器连接到内网服务器
内网服务器就算没有公网 IP 地址也能被 SSH 上
1) 所有服务器的系统都需要是 Linux 版本
2) 所有服务器都要关闭防火墙
3) 内网服务器要能够 ping 通外网服务器
4) 客户端电脑要能够 ping 通外网服务器
(分别在内网服务器和外网服务器上执行以下步骤)
# useradd <user for intranet penetration>
(分别在内网服务器和外网服务器上执行以下步骤)
# passwd <user for intranet penetration>
(分别在内网服务器和外网服务器上执行以下步骤)
# su - <user for intranet penetration>
(分别在内网服务器和外网服务器上执行以下步骤)
$ ssh-keygen
(分别在内网服务器和外网服务器上执行以下步骤)
$ exit
(只在内网服务器上执行以下步骤)
# su - <user for intranet penetration>
(只在内网服务器上执行以下步骤)
$ ssh-copy-id <IP address of Internet server>
(只在内网服务器上执行以下步骤)
$ exit
(只在外网服务器上执行以下步骤)
# su - <user for intranet penetration>
(只在外网服务器上执行以下步骤)
$ ssh-copy-id 127.0.0.1
(只在外网服务器上执行以下步骤)
$ exit
# su - <user for intranet penetration>
$ ssh -X -fCNR 11000:localhost:22 <IP address of Internet server>
(补充:这里以使用用于内网穿透的用户将内网服务器的 22 端口影射到外网服务器的 11000 端口为例)
(
注意:如果在内网服务器和外网服务器上创建的用于 SSH 内网穿透的用户名称不一样,则需要在最后 SSH 时添加上外网服务器上用于 SSH 的用户名
# su - <user for intranet penetration>
$ ssh -X -fCNR 11000:localhost:22 <user for intranet penetration>@<IP address of Internet server>
)
或者:
# ps -aux | grep -v grep | grep "11000:localhost:22 <IP address of Internet server>" &> /dev/null || su - <user for intranet penetration> -c 'ssh -X -fCNR 11000:localhost:22 <IP address of Internet server>'
(
注意:如果在内网服务器和外网服务器上创建的用于 SSH 内网穿透的用户名称不一样,则需要在最后 SSH 时添加上外网服务器上用于 SSH 的用户名
# ps -aux | grep -v grep | grep "11000:localhost:22 <IP address of Internet server>" &> /dev/null || su - <user for intranet penetration> -c 'ssh -X -fCNR 11000:localhost:22 <user for intranet penetration>@<IP address of Internet server>'
)
(补充:这里以使用用于内网穿透的用户将内网服务器的 22 端口影射到外网服务器的 11000 端口为例)
# su - <user for intranet penetration>
$ ssh -X -fCNL *:10000:localhost:11000 localhost
或者:
# ps -aux | grep -v grep | grep "*:10000:localhost:11000 localhost" || su - <user for intranet penetration> -c 'ssh -X -fCNL *:10000:localhost:11000 localhost'
(补充:这里以使用用于内网穿透的用户将外网服务器的 10000 端口影射到外网服务器的 11000 端口为例)
# ssh -p 10000 <user for intranet penetration>@<IP address of Internet server>
(补充:SSH 成功后,客户端电脑就可以直接 SSH 到内网服务器中了)
Linux Shell学习笔记:exit退出状态代码
inux提供$?特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值。
正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令执行有错。
该命令可以用于检查命令是否正确执行,比如在解压包的时候,检查解压包是否成功十分有效。
自定义退出状态码,可以在脚本中定义自己的退出状态代码,然后使用echo $?检查。
退出状态码最高是255,一般自定义的代码值为0~255,如果超出255,则返回该数值被256除了之后的余数。
退出状态代码:
0 命令成功完成
1通常的未知错误
2误用shell命令
126命令无法执行
127没有找到命令
128无效的退出参数
128+x使用Linux信号x的致命错误。
130使用Ctrl-C终止的命令
255规范外的退出状态
ubuntu下测试结果如下
wl@wl-MS-7673:/home/python$ date
2013年 11月 14日 星期四 19:12:45 CST
wl@wl-MS-7673:/home/python$ echo $?
0
wl@wl-MS-7673:/home/python$ kkllk
kkllk: command not found
wl@wl-MS-7673:/home/python$ echo $?
127
wl@wl-MS-7673:/home/python$ ls
hello.py hello.py~
wl@wl-MS-7673:/home/python$ vim a.c
wl@wl-MS-7673:/home/python$ ls
hello.py hello.py~
wl@wl-MS-7673:/home/python$ gedit a.c
wl@wl-MS-7673:/home/python$ ./hello.py
bash: ./hello.py: 权限不够
wl@wl-MS-7673:/home/python$ echo $?
126
wl@wl-MS-7673:/home/python$ date %t
date: 无效的日期"%t"
wl@wl-MS-7673:/home/python$ echo $?
1
wl@wl-MS-7673:/home/python$
root@wl-MS-7673:~# ls -sail test
790207 4 -rwxr--r-- 1 root root 30 11月 14 19:25 test
root@wl-MS-7673:~# ./test
root@wl-MS-7673:~# echo $?
44
root@wl-MS-7673:~# cat test
#!/bin/bash
var=300
exit $var
root@wl-MS-7673:~#
————————————————
版权声明:本文为CSDN博主「ChasingdreamLY」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26591517/article/details/82492829
注明:所有转载内容皆直接从被转载文章网页的标题和内容的文本中复制而来
# export DISPLAY=":0"
# gnome-terminal -x bash -c "ls; exec bash"
(补充:这里以从后台在前台执行 1 次 ls 命令为例)
(注意:此种方法只对连接了显示器的真机 GNOME 桌面有效,对虚拟机的 GNOME 桌面无效)
# crontab -e
添加以下内容:
......
*/1 * * * * export DISPLAY=":0" && gnome-terminal -x bash -c "ls; exec bash"
(补充:这里以每 1 分钟从后台在前台执行 1 次 ls 命令为例)
(注意:此种方法只对连接了显示器的真机 GNOME 桌面有效,对虚拟机的 GNOME 桌面无效)
> echo $DISPLAY
localhost:10.0
(补充:普通变量是 localhost:10.0)
> su - root
# xauth add $(xauth -f ~user1/.Xauthority list | tail -1)
# export DISPLAY=localhost:10.0
(补充:这里的 localhost:10.0 是在前面的步骤中获取的)