Ich frage mich, wie ich vorgehen soll, um die
printf "Credentials found!"
nur einmal, wenn mehrere Anmeldeinformationen gefunden werden.
Attempting Dictionary Attack on 192.168.91.130
Credentials Found!
Log into the telnet server by running telnet -l admin 192.168.91.130
When prompted enter the password found 'admin'
Credentials Found!
Log into the telnet server by running telnet -l sfx 192.168.91.130
When prompted enter the password found 'toor'
Die bash
Schleife:
for i in "${!user[@]}"; do
printf "The Username & Password is %s : %s\n\n" "${user[i]}" "${pass[i]}" >> SSH-Credentials.txt
printf "${NCB}Credentials Found!${NC}\n\n"
printf "Log into the SSH server by running ${YELLOW}ssh ${user[i]}@$ip${NC}\n\nWhen prompted enter the password found ${YELLOW}'${pass[i]}'\n"
printf "${NC}\n"
done
Antwort1
$i
Sie könnten einen Test wie folgt durchführen :
[[ "$i" -lt 1 ]] && printf "I am only printed once\n"
# OR
(( i < 1 )) && printf "I am only printed once\n"
# OR
! (( i )) && printf "I am only printed once\n"
# OR
[ "$i" -lt 1 ] && printf "I am only printed once\n"
# OR
if [[ "$i" -lt 1 ]]; then
printf "I am only printed once\n"
fi
Vorausgesetzt, Sie verwenden nichtassoziatives Bash-Array.
Zusamenfassend:Wenn der Index kleiner als 1 ist, dann drucken.
Der Lesbarkeit halber hätte ich diese Zeilen auch aufgeteilt. Viel zu breit. Beachten Sie, dass Sie auch sagen können:
printf '%s %s some long text' \
"$var1" "$var2"
Auch die Verwendung von Großbuchstaben für Variablen ist eine schlechte Angewohnheit.
Informationen sollten normalerweise auch gedruckt werden aufstderr
, Also >&2
.
Hätte auch verwendet:
prinf '%s@%s' "${user[i]}" "$ip" >&2
anstatt:
prinf "${user[i]}@$ip" >&2
Antwort2
Gibt den Header aus, wenn das user
Array Elemente enthält.
if [[ ${#user[@]} -gt 0 ]]; then
printf '%sCredentials Found!%s\n\n' "$NCB" "$NC"
fi
Machen Sie dann Ihre Schleife.
for i in "${!user[@]}"; do
printf 'The Username & Password is %s : %s\n\n' "${user[i]}" "${pass[i]}" >> SSH-Credentials.txt
cat <<END_MESSAGE
Log into the SSH server using ${YELLOW}ssh ${user[i]}@$ip$NC
When prompted, enter the password found: ${YELLOW}${pass[i]}$NC
END_MESSAGE
done