BASH - 在每个 curl 命令中生成不同的随机字符串时出现问题
BASH - Problem with generating a different random string in each curl command
我在所有可能的地方都进行了彻底的研究,但在解决标题中描述的问题上却得出了简短的(部分解决方案)。
我尝试 使用此处找到的解决方案调整我的脚本 -
chars=abcd1234ABCD
for i in {1..8} ; do
echo -n "${chars:RANDOM%${#chars}:1}"
done
echo
问题:它将为我的 bash 脚本中的每个 curl 命令生成一个随机字符串,问题是当它生成一个,比方说,5 串字符,它将使用 'neighbor' 个字符,即 45678 或 defgh。所以也许我们应该把这个解决方案完全搁置一旁,专注于下一个。
Next,我在我的脚本中使用了这个解决方案,它似乎可以 100% 完成工作 - https://gist.github.com/earthgecko/3089509 - 但是......这是一个实际的例子我想实现 - 两个 curl 命令中的每一个都应该最终发布一个随机和不同的评论,在这种情况下,它由 5 alpha-numeric 个字符组成:
这是 bash 脚本的 v1:
#!/bin/bash
NEW_UUID=$(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1)
curl "https://mywebsite.com/comment... ...&text=$NEW_UUID"; sleep 60;
curl "https://mywebsite.com/comment... ...&text=$NEW_UUID"; sleep 60;
这是 bash 脚本的 v2 (我将使用这个,我发布了更简单的 v1 以防万一有人更容易提供解决方案)
#!/bin/bash
NEW_UUID=$(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1)
for i in {1..2}; do curl "https://mywebsite.com/comment... ...&text=$NEW_UUID"; sleep 60; done
问题:在这两个版本中,脚本每次执行时都会生成一个不同的随机字符串,但是这个字符串将用于两个 curl 命令,导致总是发布两次完全相同的注释(例如:TuJ1a),目标是为每个 curl 命令生成不同的随机字符串。
最后,这个问题的前几个答案与我的有点相同,提供了如何“在每一行中生成不同的字符串”的解决方案- https://unix.stackexchange.com/questions/428737/how-can-i-add-random-string-for-each-line - 只是他们的答案适应了 OP 的个人脚本,不幸的是,对我来说,我没有适当的知识来使这些解决方案适应我的 'v2 script'。
感谢您提供的任何帮助/提示<3
the goal is to generate a different and random string for each curl command.
所以只需将字符串生成放在循环中......
#!/bin/bash
for i in {1..2}; do
newuuid=$(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1)
curl "https://mywebsite.com/comment... ...&text=$newuuid"
sleep 60
done
如果它正在生成 UUID,请调用 uuidgen
(如果可以生成 uuid)。
cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1
是重执行明智的,可能会很快耗尽熵输入。
我在所有可能的地方都进行了彻底的研究,但在解决标题中描述的问题上却得出了简短的(部分解决方案)。
我尝试 使用此处找到的解决方案调整我的脚本 -
chars=abcd1234ABCD
for i in {1..8} ; do
echo -n "${chars:RANDOM%${#chars}:1}"
done
echo
问题:它将为我的 bash 脚本中的每个 curl 命令生成一个随机字符串,问题是当它生成一个,比方说,5 串字符,它将使用 'neighbor' 个字符,即 45678 或 defgh。所以也许我们应该把这个解决方案完全搁置一旁,专注于下一个。
Next,我在我的脚本中使用了这个解决方案,它似乎可以 100% 完成工作 - https://gist.github.com/earthgecko/3089509 - 但是......这是一个实际的例子我想实现 - 两个 curl 命令中的每一个都应该最终发布一个随机和不同的评论,在这种情况下,它由 5 alpha-numeric 个字符组成:
这是 bash 脚本的 v1:
#!/bin/bash
NEW_UUID=$(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1)
curl "https://mywebsite.com/comment... ...&text=$NEW_UUID"; sleep 60;
curl "https://mywebsite.com/comment... ...&text=$NEW_UUID"; sleep 60;
这是 bash 脚本的 v2 (我将使用这个,我发布了更简单的 v1 以防万一有人更容易提供解决方案)
#!/bin/bash
NEW_UUID=$(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1)
for i in {1..2}; do curl "https://mywebsite.com/comment... ...&text=$NEW_UUID"; sleep 60; done
问题:在这两个版本中,脚本每次执行时都会生成一个不同的随机字符串,但是这个字符串将用于两个 curl 命令,导致总是发布两次完全相同的注释(例如:TuJ1a),目标是为每个 curl 命令生成不同的随机字符串。
最后,这个问题的前几个答案与我的有点相同,提供了如何“在每一行中生成不同的字符串”的解决方案- https://unix.stackexchange.com/questions/428737/how-can-i-add-random-string-for-each-line - 只是他们的答案适应了 OP 的个人脚本,不幸的是,对我来说,我没有适当的知识来使这些解决方案适应我的 'v2 script'。
感谢您提供的任何帮助/提示<3
the goal is to generate a different and random string for each curl command.
所以只需将字符串生成放在循环中......
#!/bin/bash
for i in {1..2}; do
newuuid=$(cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1)
curl "https://mywebsite.com/comment... ...&text=$newuuid"
sleep 60
done
如果它正在生成 UUID,请调用 uuidgen
(如果可以生成 uuid)。
cat /dev/urandom | tr -dc "a-zA-Z0-9" | fold -w 5 | head -n 1
是重执行明智的,可能会很快耗尽熵输入。