我正在运行生成强密码的脚本,并将输入作为用户名和调用 用于创建用户名和密码的远程脚本。
脚本就像这样
USERNAME=$1
PASS=`cat /dev/urandom|tr -dc 'a-zA-Z0-9-!@#%()+{}$|:?='|fold -w 10 | head -n 1| grep -i '[!@#%()+{}|:$?=]'`
ssh -i /home/ubuntu/test.pem ubuntu@192.168.10.32 "sudo /bin/bash /root/useradd.sh $USER $PASS "
如果密码不包含任何额外的字符,它可以正常工作,&和$。
e.g。
ssh -i /home/ubuntu/test.pem ubuntu@192.168.10.32 "sudo /bin/bash /root/useradd.sh testuser1 12345 "
它失败了,密码如下。
ssh -i /home/ubuntu/test.pem ubuntu@192.168.10.32 "sudo /bin/bash /root/useradd.sh testuser1 v|9q4TT8={ "
是否有解决方法。
此致
答案 0 :(得分:1)
使用封闭式" "
来使用强密码,bash会将" "
之间的任何字符视为字符串。
ssh -i /home/ubuntu/test.pem ubuntu@192.168.10.32 "sudo /bin/bash /root/useradd.sh \"$USER\" \"$PASS\" "
不要忘记逃避内部引用。即添加\"