内容一:判断 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
作者:朱明宇
名称:批量设置官方软件源(openSUSE 版)
作用:批量设置官方软件源(openSUSE 版)
1. 服务器清单 $add_repo_servers_list.txt 每个服务器名占用 1 行,并和此脚本放在同一目录下
2. 在此脚本的分割线内写入相应的内容
3. 给此脚本添加执行权限
4. 执行此脚本
add_repo_servers_list.txt #指定存放要设置官方软件源的文件
1. 此脚本执行前必须要先保证执行此脚本的用户能无密码 ssh 远程这些远程服务器
2. 服务器的系统需要是 openSUSE 15.2 版本
3. 服务器系统要配置好可用的软件源(最好是软件数量最多的官方版本)
4. 这些远程服务器要能够连接外网
#!/bin/bash
####################### Separator ########################
add_repo_servers_list.txt
####################### Separator ########################
cat add_repo_servers_list.txt
read -p "will add opensuse_leap_15.2 repo please input y " a
echo $a
if [ "$a" != "y" ];then
echo "you don't agree so exit now"
exit
fi
for i in `awk '{print $1}' add_repo_servers_list.txt`
do
ssh $i '
sudo -u root su - root -c "zypper mr -da"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/distribution/leap/15.2/repo/oss/ OpenSUSE_Leap_152_x64_update-oss"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/distribution/leap/15.2/repo/non-oss/ OpenSUSE_Leap_152_x64_update-non-oss"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/update/leap/15.2/oss/ OpenSUSE_Leap_152_x64_oss"
sudo -u root su - root -c "zypper ar -fcg http://download.opensuse.org/update/leap/15.2/non-oss/ OpenSUSE_Leap_152_x64_non-oss"
sudo -u root su - root -c "zypper ref"
done
客户端电脑
外网服务器
内网服务器
客户端电脑 外网服务器 内网服务器
内网服务器建立到外网服务器的 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 到内网服务器中了)
(步骤略)
# mount /dev/cdrom /mnt
(补充:这里以挂载 /dev/sr1 到 /mnt 目录为例)
# zypper ar file:///mnt/Module-Basesystem openSUSE15-Base
或者:
# zypper ar -f /mnt/Module-Basesystem openSUSE15-Base
(补充:这里以将 /mnt/Module-Basesystem 添加到软件源并命名为 openSUSE15-Base 为例)
# convert <input options> <output file name> <output options> <output file name>
# convert "a.png" "a.png.jpg"
(补充:这里以将 a.png 转换成 a.png.jpg 为例)
# ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'
(补充:这里以将当前目录下的所有 *.png 文件转换成 *.png.jpg 文件)