2015-12-17 6 views
9

मैं एक कमांड को एक साथ रखना चाहता हूं जो 32 हेक्साडेसिमल अंकों की एक स्ट्रिंग मुद्रित करेगा। कौन सा मैं क्या जरूरत हैकमांड लाइन के माध्यम से 32 हेक्साडेसिमल अंकों की एक यादृच्छिक स्ट्रिंग कैसे प्राप्त करें?

6EF6B30F9E557F948C402C89002C7C8A 

:

python -c 'import random ; print "".join(map(lambda t: format(t, "02X"), [random.randrange(256) for x in range(16)]))' 

इस तरह उत्पादन उत्पन्न करता है: मैं Python स्क्रिप्ट है जो काम करता है मिल गया है। मैं और अधिक परिष्कृत पटकथा भाषाओं माणिक और अजगर को पहुँच नहीं है

uuidgen | tr -d '-' 

हालांकि, है, और मैं किसी Mac नहीं होगा (ताकि:

Mac पर, मैं भी ऐसा कर सकते हैं नहीं यूयूडजेन)। मुझे अधिक bash'ish उपकरण जैसे sed, awk,/dev/random के साथ चिपकने की आवश्यकता है क्योंकि मैं सीमित प्लेटफॉर्म पर हूं। क्या इसे करने का कोई तरीका है?

+2

'head -c16 Biffen

उत्तर

21

आप तो hexdump है:

hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/random 

काम करना चाहिए।

स्पष्टीकरण:

  • -n 16 इनपुट (32 हेक्स अंक = 16 बाइट्स) के 16 बाइट्स का उपभोग करने के।
  • 4/4 "%08X" चार बार पुनरावृत्त करने के लिए, प्रति पुनरावृत्ति 4 बाइट्स का उपभोग करें और आवश्यक 32 बिट्स मान 8 हेक्स अंकों के रूप में प्रिंट करें, यदि आवश्यक हो तो प्रमुख शून्य के साथ।
  • 1 "\n" एक नईलाइन के साथ समाप्त करने के लिए।
+1

दाएं। और 'शून्य 08X' भी बेहतर है अगर प्रमुख शून्य होने पर बिल्कुल 32 हेक्स अंकों की आवश्यकता होती है। मैंने तदनुसार अपना जवाब संशोधित किया। –

+0

और भी बेहतर। अगर मैं कर सकता तो मैं फिर से ऊपर उठ जाऊंगा। – Biffen

+0

@Renauld_Pacalet मैं एक ही चीज़ करने में सक्षम हूं और एक पाइथन कोड से 32 अंकों की हेक्स का उत्पादन कैसे करूंगा। जब मैं इसे कमांड लाइन पर करता हूं तो यह पहली बार तेज़ काम करता है, उसके बाद कुछ कारणों से 30 सेकंड या उससे अधिक समय लगता है। –

4

तीन तरीके है कि मैं के बारे में पता:

#!/bin/bash 

n=16 

# Read n bytes from urandom (in hex): 
xxd -l "$n" -p     /dev/urandom | tr -d " \n" ; echo 
od -vN "$n" -An -tx1    /dev/urandom | tr -d " \n" ; echo 
hexdump -vn "$n" -e ' /1 "%02x"' /dev/urandom ; echo 

उपयोग एक, बाहर टिप्पणी अन्य दो।

+0

मेरे अनुभव में 'od' सबसे आम है। मैकोज़ में 'हेक्सडम्प', 'xdd', और' od' था। गिट बैश (मिनजीडब्ल्यू) में 'xxd' और 'od' था। अल्पाइन लिनक्स पर आधारित डॉकर छवि में 'od' (और' tr 'निश्चित रूप से) था। और सभी तीन प्लेटफार्मों में '/ dev/urandom' था। तो यदि आप सबसे पोर्टेबल की तलाश में हैं तो 'od' स्वाद के साथ चिपके रहें। –

संबंधित मुद्दे