LinuxForum.Fans
Тема

Прошу срочно помогите. Вытащить пароль с файла

Автор: XliN 32 сообщений 7755 просмотров
#385695
"Lupo Alberto" написал:
[lupo@asus-x201e tmp]$ sed '/ISC_PASSWORD/!d;s/\(.*ISC_PASSWORD=\"\)\(.*\)\("\ .*\)/\2/' 123.txt

Бэкслеш не на месте?

#385696
"-=Serj=-" написал:
Бэкслеш не на месте?

Да, после него пробел. По уму бы надо, чтобы искал двойные кавычки, после которых любое количество пробелов или табуляций, либо конец строки.

P.S. Я не программист.
P.S.S. Придёт drBatty всех меня с моими попытками писать на sed морально унизит. :(
P.S.S.S.

"Lupo Alberto" написал:
Все эти «изыскания» хороши, если формат целевого файла известен и постоянен.
#385698

P.S.S.S.S. Тем более, ТС вроде бы и так доволен :D

#385700
"Lupo Alberto" написал:
Да, после него пробел.

Не, я про то, что он должен быть перед кавычками.

"Lupo Alberto" написал:
По уму бы надо, чтобы искал двойные кавычки, после которых любое количество пробелов или табуляций, либо конец строки.
text
$ grep -Po 'ISC_PASSWORD=\"\K.+?(?=\"(\s|$))' 123.txt
"Lupo Alberto" написал:
P.S.S.S.S. Тем более, ТС вроде бы и так доволен 

Ну, тогда мы тем более имеем полное право помериться... регэкспами! :D

#385702
"-=Serj=-" написал:
Не, я про то, что он должен быть перед кавычками.

Вроде не надо, и так работает.
[console][lupo@asus-x201e tmp]$ sed '/ISC_PASSWORD/!d;s/\(.*ISC_PASSWORD=\"\)\(.*\)\("\ .*\)/\2/' 123.txt
aaa"bbb[/console]

#385703
"-=Serj=-" написал:
Ну, тогда мы тем более имеем полное право помериться... регэкспами! ag

Увы, в данном случае «ваше кунг-фу сильнее моего» :'(

#385705
"Lupo Alberto" написал:
Вроде не надо, и так работает.

Тогда и перед первой двойной кавычкой убрать?

"Lupo Alberto" написал:
Увы, в данном случае «ваше кунг-фу сильнее моего»

Не, ну мы ж не ради выяснения, чей кунг-фу эмм.. сильнее)

#385706
"Lupo Alberto" написал:
По уму бы надо, чтобы искал двойные кавычки, после которых любое количество пробелов или табуляций, либо конец строки.

а если в пароле пробел после кавычек...
да и по уму не надо пароль открытым текстом хранить...

"-=Serj=-" написал:
Я про то, что регулярка универсальна по отношению к формату файла.

такой не бывает ;)
на вскидку пара моментов, где оно может сломаться ИРЛ
1. не учтено, что строка может быть закоментирована
2. не учтены пробелы до/после равно...
3. может быть ещё переменная DEFAULT_ISC_PASSWORD

"Lupo Alberto" написал:
P.S.S. Придёт drBatty всех меня с моими попытками писать на sed морально унизит.

я могу попробовать это сделать... правда тогда он уже будет придираться ко мне, что я это не правильно делаю... да и не получится у меня... т.е. я могу просто выкинуть шлак и показать как это втрое короче записать:
sed -ne 's/ISC_PASSWORD="\(.*\)"/\1/p'

#385707
"Fat-Zer" написал:
я могу попробовать это сделать... правда тогда он уже будет придираться ко мне, что я это не правильно делаю... да и не получится у меня... т.е. я могу просто выкинуть шлак и показать как это втрое короче записать:
sed -ne 's/ISC_PASSWORD="\(.*\)"/\1/p'

Не сейчас...

text
[lupo@asus-x201e tmp]$ cat 123.txt 
qwert 123
asd ISC_PASSWORD="aaabbb" dsa 
123 qwerty
[lupo@asus-x201e tmp]$ sed -ne 's/ISC_PASSWORD="\(.*\)"/\1/p' 123.txt 
asd aaabbb dsa
#385709

sed -ne 's/.*ISC_PASSWORD="\(.*\)".*/\1/p' 123.txt

P.S. Тоже не работает для всех случаев.

#385720
"Lupo Alberto" написал:
P.S. Тоже не работает для всех случаев.

что бы работало для всех такого не бывает, учитывая, что мы вообще не знаем о каком формате конфигов идёт речь...
вот так будет работать для большинства bash-подобных вроде make.conf:
sed -ne 's/^\s*ISC_PASSWORD="\(.*\)"\s*\(#.*\)\?$/\1/p'

#385788

Вот я задал тему для мозгового штурма =) Поставьте себе firebird2.5 и увидите файл /etc/firebird/25/SYSDBA.Password И пароль там как не странно в открытом виде. Права правда на файл не помню какие =)

Войдите или зарегистрируйтесь, чтобы ответить.