shell脚本中怎样对特殊字符进行处理 一串密码在加密前对密码中的!@#$%等特殊字符进行处理(加上‘’)。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中怎样对特殊字符进行处理 一串密码在加密前对密码中的!@#$%等特殊字符进行处理(加上‘’)。相关的知识,希望对你有一定的参考价值。
在shell脚本中 密码加密工具不支持直接对像(Aa123!@#$)这样儿的密码进行加密,只能对(Aa123‘!''@''#''$')特殊字符加个单引号或双引号才能加密成功。求大神们帮忙,我不知道怎么让给密码中的特殊字符中上引号。
用sed正则匹配全局替换:
echo 'Aa123!@#$' | sed "s/[^0-9a-zA-Z]/'&'/g"这样就把不是字母或数字的其他字符都加上单引号啦
当然,如果原输入中不存在特殊字符,就还是原样输出,不会做任何改变。
追问在liunx下!@使用这条命 令不行啊,会把!@这俩给干掉了,要么就执行失败。现在问题已经用别的方式解决了,不过你的回答很好 ,长知识 了谢谢 分给得。
追答!@也是可以的:
echo '!@' | sed "s/[^0-9a-zA-Z]/'&'/g"echo 的时候需要用单引号,因为单引号会屏蔽一切特殊含义,只当做字符本身来解释。
早试过了 不行。
在expect里面怎样send一串含有特殊字符的字符串
expect其实就是产生两个进程,一个模拟用户(expect进程本身),一个执行命令(spawn语句产生的进程)。send就是模拟用户在console下输入字符串,我们输入命令都要回车的,相应的send的字符串要用\r结束。脚本里的expect语句相当于用户等待命令输出以确定接下来输入什么命令。 特殊字符转义不好解释,看Exploring Expect吧。好像有一个笨办法是,send每个特殊字符前面都加上\就可以了,expect每个特殊字符前面加上\\\。 send "\$ax\[sdf\]\@\#\r" expect "\\\r\\\n 参考技术A 苦逼你好,这个帖子放到这没人回答,还好我自己找到了答案,我把答案写在这里等待下一个苦逼降临,希望你们能少走一点弯路。1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:
1.1 首行加上/usr/bin/expect
1.2 spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile
1.3 expect: 只有spawn执行的命令结果才会被expect捕捉到,因为spawn会启动一个进程,只有这个进程的相关信息才会被捕捉到,主要包括:标准输入的提示信息,eof和timeout。
1.4 send和send_user:send会将expect脚本中需要的信息发送给spawn启动的那个进程,而send_user只是回显用户发出的信息,类似于shell中的echo而已。
2. 一个小例子,用于linux下账户的建立:
filename: account.sh,可以使用./account.sh newaccout来执行;
1 #!/usr/bin/expect
2
3 set passwd "mypasswd"【这个是你设置的密码】
4 set timeout 60
5
6 if $argc != 1
7 send "usage ./account.sh \$newaccount\n"
8 exit
9
10
11 set user [lindex $argv [expr $argc-1]]
12
13 spawn sudo useradd -s /bin/bash -g mygroup -m $user
14
15 expect
16 "assword"
17 send_user "sudo now\n"
18 send "$passwd\n"
19 exp_continue
20
21 eof
22
23 send_user "eof\n"
24
25
26
27 spawn sudo passwd $user
28 expect
29 "assword"
30 send "$passwd\n"
31 exp_continue
32
33 eof
34
35 send_user "eof"
36
37
38
39 spawn sudo smbpasswd -a $user
40 expect
41 "assword"
42 send "$passwd\n"
43 exp_continue
44
45 eof
46
47 send_user "eof"
48
49
以上是关于shell脚本中怎样对特殊字符进行处理 一串密码在加密前对密码中的!@#$%等特殊字符进行处理(加上‘’)。的主要内容,如果未能解决你的问题,请参考以下文章