全球主机交流论坛

标题: 有关 Linux 一键重装脚本自定密码出错的说明 [打印本页]

作者: 天权璇玑    时间: 2023-4-29 20:17
标题: 有关 Linux 一键重装脚本自定密码出错的说明
本帖最后由 天权璇玑 于 2023-4-29 20:19 编辑

原帖地址:https://443502.xyz/thread-1159839-1-1.html

项目地址,欢迎 star,github 主页或私信反馈:

https://github.com/leitbogioro/Tools

主贴里有若干坛友反馈,脚本安装时,通过 -pwd '自定密码内容' 输入后,系统装好后再 ssh 机器,显示密码不对。这个问题我进行了一番调查,现在已得到结果,现将问题原因和解决方法告诉大家。

原因:Linux shell 语言对变量中的字符要求非常严格,诸如表示变量的美元符号——"$"、表示强引用,不把其中被括起来的文本内容当命令或变量处理的的单引号——" ' ",本次密码设置问题就出在单引号上,我们通过简单的例子就能知道问题出在哪。

只输出被单引号括起来的字符,结果没什么好说的,单引号不会出现:

  1. root@debian:~# echo 'xiaoming'
  2. xiaoming
复制代码


这时我想输出带单引号的结果,如 'xiaoming' ,给前后单引号各再加一个单引号,显然不行:

  1. root@debian:~# echo ''xiaoming''
  2. xiaoming
复制代码


解决办法是什么呢?很简单,用 '\' 当做转义符,附在需要输出的单引号 ' 前,这样结果里单引号 ' 就能正常出现:

  1. root@debian:~# echo ''\''xiaoming'\'''
  2. 'xiaoming'
复制代码


也就是说,如果是以字符串的形式,向 shell 的变量里存储值,'\'' 的作用就是可以让变量里正确存入单引号 ' 的值,前提是该变量中的值前后已经被单引号括起来,我们可以在任何地方插入我们需要的单引号,只要以 '\'' 输入即可,比如我们需要输出 xi'aom'ing:

  1. root@debian:~# echo 'xi'\''aom'\''ing'
  2. xi'aom'ing
复制代码


又比如我们需要输出 x'iao'ming

  1. root@debian:~# echo 'x'\''iao'\''ming'
  2. x'iao'ming
复制代码


所以一定要记住,使用脚本自定义密码,除了要把密码整个用单引号括起来: -pwd '密码内容' ,如果密码中带有英文单引号('),每个单引号前都必须加上被一对新的单引号括起来的斜杠转义,才能被 shell 正确识别为一个纯文本的单引号,否则 shell 会自动忽略掉你设置密码中间带的所有单个单引号,所以才造成密码设置错误,敬请注意!以下这个才对应正式密码中带的一个单引号字符!

  1. '\''
复制代码




作者: Boos    时间: 2023-4-29 20:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: 她说是晒黑的    时间: 2023-4-29 20:20
哥,256内存的能DD啥系统。。。好像都提示低于512
作者: 天权璇玑    时间: 2023-4-29 20:23
她说是晒黑的 发表于 2023-4-29 20:20
哥,256内存的能DD啥系统。。。好像都提示低于512


Debian 安装时默认开启的 low memory mode(低内存模式),但其他人的 256M 机器我测过,内存还是不够,安装程序把内存写满了,因为网络安装没有任何外部存储设备,所以要把你机器内存临时当优盘用,内存太小,相当于优盘容量太小,连系统最精简安装包都载入不进去,所以才出现安装失败。

你可以试试用 netbootxyz 安装?我看也够呛

  1. bash InstallNET.sh -netbootxyz
复制代码

作者: 她说是晒黑的    时间: 2023-4-29 20:25
天权璇玑 发表于 2023-4-29 20:23
Debian 安装时默认开启的 low memory mode(低内存模式),但其他人的 256M 机器我测过,内存还是不够, ...

我试试





欢迎光临 全球主机交流论坛 (https://443502.xyz/) Powered by Discuz! X3.4