2020-01-31 13:43:08 flyingwindow 阅读数 32

Linux随机密码生成方法

目前我知道的有3种,如下:

1、md5sum

该方法可生成无规律的字母数字组合,且字母均为小写。

md5sum xxx.xx		//可以用MD5哈希函数生成某文件的哈希值当随机密码
echo xxx|md5sum			//管道符前面可输入大小写字母、数字、标点符号,甚至可以写一个循环多次生成变量,根据输出的内容生成一个哈希值

举例:根据序号1-20,生成20个哈希密码(伪随机)。

for i in `seq 1 20`;do
	echo $i|md5sum
done

2、RANDOM

在BASH环境下,可以通过输出$RANDOM方式。这个RANDOM变量的内容是得到0~32767之间的随机数。

echo $RANDOM

所以你只要echo $RANDOM时,就会主动的随机取出一个介于0~32767之间的数值。
如果我们想要0~100之间的呢.我们就可以利用 declare 宣告数值类型。

declare -i number=$RANDOM*100/32767; echo $number
declare的数字均为整数,所以$RANDOM*100范围为0-3276700,除以32767后,范围为0-100。

3、/dev/urandom

通过查看/dev/urandom即可看到随机数(大小写字母、数字、标点符号、空格等)。可用命令进行定制化设置查询,获取想要的密码。

cat /dev/urandom

如果想要20个长度为6位,且仅包含【a-zA-Z0-9】的随机字符做密码,可做如下定制化查询输出。

cat /dev/urandom|strings -6|egrep "^[a-zA-Z0-9]{6}$"|head -20
strings -6:代表只显示大于6个字符的字符串(默认最少4个)。
egrep "^[a-zA-Z0-9]{6}$":开头到结尾(^为开头,$为结尾),抓取匹配a-z,A-Z,0-9 的,必须是6位的字符串。
head -20:显示头20行密码。

因为egrep命令用于在文件内查找指定的字符串,所以需要先通strings命令把字符串筛选出来,不可省略。

嗯,就酱。

2020-02-17 23:23:58 weixin_43936969 阅读数 9

练习1
使用for循环在/westos目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串westos

#!/bin/bash
path=/westos
[ -d "$path" ] || mkdir -p $path
for n in `seq 10`
do
	random=$(openssl rand -base64 40|sed 's/[^a-z]//g'|cut -c 3-12)
	#random=$(echo $RANDOM |md5sum |sed 's/[^a-z]//g')		#和上一行效果相同
	touch $path/${random}_westos.html
done

在这里插入图片描述
2.练习2
批量创建10个系统帐号(westos01-westos10),并设置密码(密码为随机数,要求是字符和数字的混合)
对于给一个数字加0有多种实现方法:seq -w 10 echo {01..10}

#!/bin/bash
. /etc/init.d/functions
user="westos"
passfile="/tmp/user.log"
for n in `seq -w 10`
do
	pass="`echo $RANDOM |md5sum |cut -c 3-11`"
	useradd $user$n &>/dev/null && {
		echo "$pass"|passwd --stdin $user$n &>/dev/null
		echo -e "user: $user$n\tpasswd:$pass">>$passfile
	}
if [ $? -eq 0 ]
then
	action "$user$n is ok" /bin/true
else
	action "$user$n"is fail /bin/false
fi
done
echo ==============================================
cat $passfile && >$passfile

在这里插入图片描述

2018-09-13 19:35:47 sinat_34747742 阅读数 209

无力吐槽。。。

基础是真的差,一个直接排序搞了一下午都没成功。仅仅是对于基本知识点理解不透彻,少加一个等号。

看别人找工作,语言是基础,还要懂linux,数据结构与算法。。。。。

加油吧。

public class suijizifuchuan {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		char[] c = new char[62];
		for(int i = 0;i<=61;i++){
			if(i<26){
				int a = i + 65;
				c[i] = (char)a;
			}
			else if(i>=26&i<52){
				int a = i-26 +97;
				c[i] = (char)a;
			}
			else if(i>=52&i<62){
				int a = i -52+48;
				c[i] = (char)a;
				}
			}		
		for(char b : c){
			System.out.print(b);	//输出全部字符
		}
		System.out.println();
		String str = "";
		char[] f = new char[5];
		for (int i = 0;i<5;i++){
		int e = (int)(Math.random()*62);
		f[i] = c[e];
		}
		
		System.out.println(f);
		for(int i = 1;i <5;i++){        //冒泡排序
			for(int j = 0;j<4;j++){
			if(f[j]>f[j+1]){
				char temp = f[j];
				f[j] = f[j+1];
				f[j+1] = temp;
			}
		}
		}
		System.out.println(f);
		 
		for(int i = 1;i<f.length;i++){   //直接排序
			int index = 0;
			for(int j =0;j<=f.length-i;j++){
				if(f[j]>f[index]){
					index = j;
				}
			}
			char temp = f[f.length-i];
			f[f.length-i] = f[index];
			f[index] = temp;
		}
		System.out.println(f);
		
		Arrays.sort(f);                  //Arrays.sort排序
		for(int i:f){
			System.out.println(f);
		}
	
	}
}

 

2015-05-30 22:18:55 devon1devon 阅读数 2642

脚本作用:

生成特定长度的字符串,只包含数字或者大小写字母。

count定义字符串的长度

number定义字符串的数目

line定义生成多少个随机字符串,如果number值很大,相应的将line值调大。

由于pv1中的字符串长度不是固定的,所以需要经过一个for循环进行字符串筛选。

以下是脚本命令:


#!/bin/bash


count=6

line=100

number=10

touch /root/pv1.txt 

cat /dev/urandom |sed 's/[^a-zA-Z0-9]//g'|strings -n $count |head -n $line|grep -i '^[a-z]'|sort > /root/pv1.txt


touch /root/pv$count.txt

for i in `cat /root/pv1.txt`;do
        [ ${#i} -eq $count ] && echo $i >>pv2txt

done


touch /root/password$number.txt

head -10 /root/pv2.txt > /root/password$number.txt



linux设置密码规则

阅读数 3215

没有更多推荐了,返回首页