Buongiorno a tutti :)

partendo da questo topic quindi sempre aggiungendo la "r" "R" all inizio.

esiste un modo per creare stringhe a 23 caratteri personalizzate cioè

così composte "AB12cdeFghiLMnO345PqRsT" rispettando maiuscole,numeri e minuscole

magari aiutatemi nel dirmi cosa posso scrivere in google per cercare qualcosa del genere forse esiste qualche programma?

Grazie Ciao

chiesto 06 Giu '14, 07:32

Davide_74's gravatar image

Davide_74
617225571

@Davide_74: fammi capire bene, intendi una stringa che abbia due maiuscole, due numeri, tre minuscole, etc. etc., nell'ordine specificato nell'esempio?

(06 Giu '14, 08:10) enzotib ♦♦ enzotib's gravatar image

Esattamente

(06 Giu '14, 08:53) Davide_74 Davide_74's gravatar image

Ecco un altro approccio, che non utilizza /dev/urandom, e molto più veloce del precedente

#!/usr/bin/env bash

# Modello delle stringhe da generare
pattern='AB12cdeFghiLMnO345PqRsT'

# Numero di stringhe da generare
max=100

LC_ALL=C

generate_string() {
  local pattern="$1";                      local n="${#pattern}"
  local uppercase="$(printf '%s' {A..Z})"; local nu="${#uppercase}"
  local lowercase="$(printf '%s' {a..z})"; local nl="${#lowercase}"
  local digits="$(printf '%s' {0..9})";    local nd="${#digits}"
  local i j

  printf 'R'
  for ((i = 0; i < n; i++)); do
    case "${pattern:i:1}" in
      [A-Z])
        ((j = RANDOM % nu))
        printf "${uppercase:j:1}"
        ;;
      [a-z])
        ((j = RANDOM % nl))
        printf "${lowercase:j:1}"
        ;;
      [0-9])
        ((j = RANDOM % nd))
        printf "${digits:j:1}"
        ;;
    esac
  done
  echo
}

for ((i = 1; i <= max; i++)); do
  generate_string "$pattern"
done
coll. permanente

ha risposto 07 Giu '14, 13:00

enzotib's gravatar image

enzotib ♦♦
14.0k112186

modificato 07 Giu '14, 13:01

magnifico, è super veloce Grazie ancora.

ho pensato una cosa, per evitare di chiedere ancora ho modificato il primo esempio cioè per generare soltanto stringhe a 24 e per avere come primo carattere una lettera maiuscola cioè al posto della "R" qualsiasi lettera sempre maiuscola ho fatto così: generate '[A-Z]'.

adesso provo se riesco a modificare quest altro esempio o magari se hai 2 minuti ci pensi te io non riesco non sono capace

Ciao

[edit] ho modificato il secondo esempio per ottenere stringhe a 24 modello stringa ho aggiunto una maiuscola all inizio e poi printf '' senza R

(07 Giu '14, 14:08) Davide_74 Davide_74's gravatar image

@Davide_74: mi pare quasi giusto, ma nel secondo esempio la riga con printf '' puoi addirittura cancellarla.
Ah, e se ritieni che questa soluzione sia migliore, allora scegli questa come risposta accettata.

(07 Giu '14, 14:59) enzotib ♦♦ enzotib's gravatar image

Ecco una soluzione:

#!/bin/bash

pattern="AB12cdeFghiLMnO345PqRsT"

# funzione per generare un carattere casuale di un certo tipo
generate() {
  local type="^$1$"
  local char
  while read -N1 char; do
    if [[ $char =~ $type ]]; then
      printf '%s' $char
      break
    fi
  done < <(tr -dc '[A-Za-z0-9]' </dev/urandom)
}

# funzione per generare una stringa casuale basata su un pattern
# piu' r/R finale aggiunta
generate_pattern() {
  local pattern="$1"
  local n=${#pattern}
  local char
  local i
  generate '[rR]'
  for ((i = 0; i < n; i++)); do
    char="${pattern:$i:1}"
    if [[ $char =~ [A-Z] ]]; then
      generate '[A-Z]'
    elif [[ $char =~ [a-z] ]]; then
      generate '[a-z]'
    elif [[ $char =~ [0-9] ]]; then
      generate '[0-9]'
    else
      echo "unknown character type" >&2
      exit 1
    fi
  done
  echo
}

# generazione di 100 stringhe casuali basate sul pattern
# piu' r/R finale aggiunta
for ((i = 1; i <= 100; i++)); do
  generate_pattern "$pattern"
done
coll. permanente

ha risposto 06 Giu '14, 13:27

enzotib's gravatar image

enzotib ♦♦
14.0k112186

modificato 06 Giu '14, 23:13

Grazie, immaginavo che era una cosa un pochino complicata.

ma c'è qualcosa che non va ed io non riesco a capire cosa, cmq ti posto come vengono le stringhe cioè la "R" viene aggiunta alla fine e no all inizio e poi vengono dei simboli cioè un simbolo strano ecco:

user@user:~$ '/home/user/Scrivania/pop.sh' FZ26�ep�tCwhs�VMaQ�753R�iOgP�r QG74oxdZo�ei�ZAtU065IbLdAR XL01v�nkB�bhgYR���xI05�2A�aZdX�r

forse sbaglio io a lanciare lo script ? ho copiato ed incollato e poi trascino il file nel terminale.

e cmq l aggiunta della "r" piccola si può fare a meno cioè aggiungendo soltanto la "R"

(06 Giu '14, 17:49) Davide_74 Davide_74's gravatar image

poi aggiungo, aggiungendo allo script "> newfile.txt" nel file salvato noto anche lettere accentate ed anche caratteri speciali ? se così si dice. http://i61.tinypic.com/2j2sxuw.png si può fare che non scrive questi caratteri cioè lettere accentate e caratteri spaciali ?

Grazie

(06 Giu '14, 18:12) Davide_74 Davide_74's gravatar image

@Davide_74: evidentemente non funziona, l'avevo provato su Mac OSX, usando solo comandi standard e ritenevo che funzionasse anche su Linux, ora controllo cosa c'è che non va.

(06 Giu '14, 21:40) enzotib ♦♦ enzotib's gravatar image

@Davide_74: ho modificato, ora dovrebbe funzionare.

(06 Giu '14, 21:52) enzotib ♦♦ enzotib's gravatar image

leggendo quel "dovrebbe" mi preoccupava :) infatti non va cioè va meglio ma non al 100%.

non dico cosa è che non va, giusto per non disturbare più di tanto,se vuoi prova te.

cmq sempre Grazie

(06 Giu '14, 22:38) Davide_74 Davide_74's gravatar image

@Davide_74: non disturbi, se non volessi o non potessi rispondere non lo farei, ma se non mi dici cos'è che non va non posso correggere, dato che a me sembra funzionare correttamente.

(06 Giu '14, 22:45) enzotib ♦♦ enzotib's gravatar image

quasi tutte le stringhe, io vedo lettere accentate ed anche simboli non come prima questo è ovvio, ti posto qualche stringa:

RLW18fumIáǣkILbY359YeUoJ RĎQ11elkKjecLJxÄ490GsJuJ però qualcuna viene perfetta tipo questa RPF45hkiXcwtGExV975UfIjL

(06 Giu '14, 23:04) Davide_74 Davide_74's gravatar image

@Davide_74: ecco, ho corretto ancora, ho dovuto mettere il comando 'tr', anche se così è molto più lento. Il "dovrebbe funzionare" è d'obbligo, dato che non sempre uno riesce ad accorgersi se c'è qualcosa che non va.

(06 Giu '14, 23:14) enzotib ♦♦ enzotib's gravatar image

adesso si "perfetto"

più lento si, il processore mi va a 85 90, significa che dopo lanciato il tuo script lancio un altro script ogni 15 minuti 5 di pausa.

Grazie @enzotib cmq se riesco a raggiungere il traguardo vengo ed aggiungo in piccolo commento nel bene di tutti.

Cordialmente Davide

(06 Giu '14, 23:31) Davide_74 Davide_74's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×93

domanda posta: 06 Giu '14, 07:32

domanda visualizzata: 802 volte

ultimo aggiornamento: 07 Giu '14, 15:00

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.