Михаил

пароли от почтовых ящиков

добрый день! на сервере 300 почтовых ящиков 

подскажите какой командой из командной строки вывести пароли от почтовых ящиков 

возможно ли это ? 

/usr/local/mgr5/sbin/mgrctl -m ispmgr email.edit  name=webmaster@site.ru  и так далее

11.12.2024 10:16

IgorG

Можете получить пароли для ящиков с помощью такого вот bash скрипта, например:

#!/bin/sh 
/usr/local/mgr5/sbin/mgrctl -m ispmgr email | while read -r LINE 
do 
eval "${LINE}" 
eval "$(/usr/local/mgr5/sbin/mgrctl -m ispmgr email.edit elid=${name})"
echo "${elid},${passwd}" 
done

11.12.2024 10:31

IgorG

Проблема тут в том, что eval рекомендуется использовать на тестовых данных. Потому что если в данных есть какие-то специфичные символы, парсинг поломается. На настоящих данных надо использовать какой-то нормальный парсинг.

11.12.2024 10:43

Михаил

eval ломался на некоторых ящиках 

вот что выдал chatgpt 

#!/bin/sh

/usr/local/mgr5/sbin/mgrctl -m ispmgr email | while read -r LINE
do
    # Разбиваем строку на параметры
    name=$(echo "$LINE" | awk -F'name=' '{print $2}' | awk '{print $1}')
    if [ -n "$name" ]; then
        # Используем grep для извлечения нужных данных из команды email.edit
        output=$(/usr/local/mgr5/sbin/mgrctl -m ispmgr email.edit elid="$name")
        
        # Извлекаем elid и passwd из вывода команды
        elid=$(echo "$output" | grep -oP 'elid=\K\S+')
        passwd=$(echo "$output" | grep -oP 'passwd=\K\S+')

        echo "${elid} ${passwd}"
    fi
done

все выводит без ошибок

22.12.2024 06:11