RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Боковая панель


Навигация


Линкшэринг


WTF?!

Написать в спортлото

Донат Данкинс


Добавить новую страницу

Вы не можете добавлять страницы
linux:bash:tnt

Содержание

Трюки в консоли

Быстро скопировать через rsync много файлов на другой сервер

Задача: перенести сайт на новый сервер, но для бэкапа нет места.
Решение: копируем по сети все файлы через rsync

Пример

rsync -azh --progress --stats /var/www/user/data/www/ -e 'ssh -p 50222' root@2.3.4.111:/var/www/user/data/www/

Флаг это алиас для следующих флагов

  • r – рекурсивно скачивать всё
  • l – передавать все найденные симлинки
  • t – сохранить таймстемпы
  • p – сохранить права
  • g – сохранить группы
  • o – сохранить owner'а
  • D – FIXME Preserve block and character devices

Другие флаги

  • z - сжатие файлов
  • h - хуман ридабл
  • e - если нужно например передать альтернативный порт ssh
  • progress - индикатор выполнения (можно использовать -P, который включает в себя progress и partial. Partial возобновляет прерванную передачу
  • stats - какая-то статистика

Важно. Есть разница между rsync /path-from/site и rsync /path-from/site

Без слэша будет скопирован каталог site и все файлы внутри.
Со слэшем будут скопированы все файлы внутри указанного каталога.

Предотвратить повторный запуск задачи из cron

/usr/bin/flock -xn /tmp/my_long_task.lock -c 'sh /path/backup.sh
  • -x –exclusive - get an exclusive lock (default)
  • -n –nonblock - fail rather than wait

Как вывести полную дату для команды last

last -F

Ключ -F - Print full login and logout times and dates.

reboot   system boot  2.6.32-573.22.1. Thu Jan 26 09:48:36 2017 - Sun May 27 17:39:39 2018 (486+07:51)
reboot   system boot  2.6.32-573.22.1. Thu Jan 26 09:48 - 17:39 (486+07:51)

Как вывести хуман ридабл в ls

Посмотреть Java Xms Xmx

https://stackoverflow.com/questions/28272923/default-xmxsize-in-java-8

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'

Java8 takes Larger of 1/6th of your physical memory for your Xmssize (Minimum HeapSize) and Smaller of 1/4th of your physical memory for your -Xmxsize (Maximum HeapSize).

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size

Как загрузить файл на удаленный FTP из командной строки

curl -T my-local-file.txt ftp://ftp.example.com --user user:secret

Источник: http://superuser.com/questions/323214/how-to-upload-one-file-by-ftp-from-command-line

Exim лог \320 кодировка

Exim пишет в лог что-то неразборчивое, используем printf

printf "\321\203 \320\222\320\260\321\201 \320\275\320\276\320\262\320\276\320\265 \321\201\320\276\320\276\320\261\321\211\320\265\320\275\320\270\320\265"

будет преобразовано в 'у Вас новое сообщение'

find

Поиск файлов по имени find /var/www/ -name "file.conf"
find /var/www/ -name "*.conf"
Поиск без учёта регистра find /var/www/ -iname file.conf
Поиск по размеру файлов find /home/user -size +10M
Поиск по маске прав find ./ -perm 700
Файлы созданные или изменённые в течении последних 5 дней find /home/user -type f -mtime -5
Файлы созданные или изменённые в течении последних 5 минут find /home/user -type f -mmin -5
Найти файлы созданные или изменённые старше 30 дней (поиск устаревших файлов) find /home/user -type f -mtime +30
Время последнего обращения к которым более 5 дней find /usr/bin -type f -atime +5
Поиск строки в файлах find ./ -type f -exec grep -i -H "STRING" {} \;
Найти все файлы php в который встречается строка STRING find ./ -type f -name "*.php" -exec grep -i -H "STRING" {} \;
grep с опцией -R для поиска файлов по содержимому grep "STRING" -R /path/for/find
Замена текста в файлах find ./ -type f -name "*.conf" -exec sed -i s/OLDTEXT/NEWTEXT/g {} \;
Установка прав доступа 644 на все файлы в текущей директории и всех поддиректориях find ./ -type f -exec chmod 644 {} \;
Установка прав доступа 755 на все папки в текущей директории и всех поддиректориях find ./ -type d -exec chmod 755 {} \;

Замена слова в файле

sed -i -e 's/word1/word2/g' ${FILE}

Как сменить кодировку файла

Пример из utf8 в win1251

iconv -f utf8 -t cp1251 old_unicode.txt -o new_windows.txt

Подробности в iconv –help

Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.

 Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output

 Information:
  -l, --list                 list all known coded character sets

 Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information

  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version

Input/Output format specification: -f, —from-code=NAME encoding of original text -t, —to-code=NAME encoding for output

Information: -l, —list list all known coded character sets

Output control: -c omit invalid characters from output -o, —output=FILE output file -s, —silent suppress warnings —verbose print progress information

-?, —help Give this help list —usage Give a short usage message -V, —version Print program version </code>

Как посмотреть дату последней проверки файловой системы

# tune2fs -l /dev/sda1 | grep "Last checked"

Server does not support diffie-hellman-group1-sha1 for keyexchange

При подключении по SFTP ошибка Server does not support diffie-hellman-group1-sha1 for keyexchange.

Добавляем в /etc/ssh/sshd_config

KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1
Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr

Как увеличить ip_local_port_range

Как увеличить диапазон локальных портов (ip_local_port_range) доступных для установки исходящих подключений

Смотрим текущий диапазон

# cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000

Либо так

# sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

Увеличиваем значение

# sysctl -w net.ipv4.ip_local_port_range="16000 64000"
net.ipv4.ip_local_port_range = 16000 64000

Или так

# echo 16000 64000 > /proc/sys/net/ipv4/ip_local_port_range

Чтобы изменения сохранились после перезгрузки системы добавьте новое значение в файл /etc/sysctl.conf или в отдельный файл, который будет подгружаться

# cat /etc/sysctl.d/net.ipv4.ip_local_port_range.conf
net.ipv4.ip_local_port_range = 16000 64000

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

# ss -s
Total: 198 (kernel 750)
TCP:   23 (estab 4, closed 5, orphaned 0, synrecv 0, timewait 4/0), ports 0

Transport Total     IP        IPv6
*         750       -         -        
RAW       0         0         0        
UDP       11        6         5        
TCP       18        13        5        
INET      29        19        10       
FRAG      0         0         0   

http://oper777.blogspot.de/2012/06/blog-post_27.html http://oper777.blogspot.de/2014/10/blog-post.html

Сверим часы

via http://www.shkodenko.com/linux-check-system-php-mysql-date-time/

date ; php -r "echo date('r').PHP_EOL;" ; mysql -e "SELECT NOW();"

./find_fix_permissions.sh

#!/bin/bash
 
CORRECT_PERMISSIONS=644
SEARCH_FOLDER="./images/"
 
if [ "$(find $SEARCH_FOLDER -type f ! -perm $CORRECT_PERMISSIONS -print)" ]; then
    find $SEARCH_FOLDER -type f ! -perm $CORRECT_PERMISSIONS -print0 |xargs -0 chmod -fv $CORRECT_PERMISSIONS
fi

Статистика популярности использования команд на основании history

history|awk '{print $2}'|sort|uniq -c|sort -rn|head -20|awk '!max{max=$1;}{r="";i=s=60*$1/max;while(i-->0)r=r"#";printf "%15s %5d %s %s",$2,$1,r,"\n";}'

Не сохранять историю в bash

Как вводить команды и быть увереным, что они не логируются?

Просто добавь воды пробел

[space]ls -la /home

Выйти из bash без сохранения истории и оставить предыдущие команды в истории нетронутыми

unset HISTFILE && exit

Полностью удалить историю bash и выйти

history -c && exit

SSH

server refused to start a shell

Надо больше памяти

Лог

[2761174.913903] systemd[1]: apt-daily.service: Failed to fork: Cannot allocate memory
[2761174.958250] systemd[1]: apt-daily.service: Failed to run 'start' task: Cannot allocate memory
...
[2762122.429047] systemd[1]: phpsessionclean.service: Failed to fork: Cannot allocate memory
[2762122.484064] systemd[1]: phpsessionclean.service: Failed to run 'start' task: Cannot allocate memory
[2762122.537514] systemd[1]: Failed to start Clean php session files.
[2762122.572386] systemd[1]: phpsessionclean.service: Unit entered failed state.
[2762122.612237] systemd[1]: phpsessionclean.service: Failed with result 'resources'.
...
[2772386.221701] systemd[1]: Created slice User Slice of bob.
[2772386.257589] systemd[1]: user@1001.service: Failed to fork: Cannot allocate memory
[2772386.299359] systemd[1]: user@1001.service: Failed to run 'start' task: Cannot allocate memory
[2772386.343392] systemd[1]: Failed to start User Manager for UID 1001.
[2772386.371912] systemd[1]: user@1001.service: Unit entered failed state.
[2772386.402837] systemd[1]: user@1001.service: Failed with result 'resources'.

ls Killed

При попытке посчитать количество файлов в каталоге (как потом оказалось >3 млн файлов).

ls -f /var/www/user/data | wc -l

всё завершается ошибкой killed out of memory.

А всего-то надо было добавить один ключ к ls

  • -f — не сортировать содержимое каталога; выдавать файлы в том порядке, в котором они записаны на диск (wikipedia)
  • -f — do not sort, enable -aU, disable -ls –color (man)

Меняем дату создания файла

touch --date="2016-07-13" /home/user/file.txt

Прибить сразу все httpd

# ps auxwww | grep -v grep | grep "httpd"
#!/bin/bash
 
OLD_HTTPD_PIDS="$(ps auxwww |grep "httpd" |grep -v "grep" | awk '{print $2}')"
 
for FPID in ${OLD_HTTPD_PIDS}
do
echo "Killing httpd processe pid: ${FPID}"
kill -s 9 ${FPID}
done

Вывести файл без комментариев и пустых строк

# cat /etc/my.cnf |sed '/^$/d' |grep -v "#" |more

В консоли бнопня и кракозябры

Если к примеру прочитать бинарный файл через cat, more или less or, то в ответ мы получим бнопню и консоль перестанет работать.

Нажимаем CTRL+C, вводим reset, жмём ввод.

Нашёл крутой вариант

Делаем алиас в .bashrc

alias fix='reset; stty sane; tput rs1; clear; echo -e "\033c"'

Как всё сломается, то делаем CTRL+C несколько раз и потом вводим fix

туннели ssh

Email уведомление о входе в систему

if [ "$SSH_TTY" ] ; then
        DATE=`date`
        IP=`echo $SSH_CLIENT
        USER=`id -un`
        echo -e "User: $USER\nIP: $IP\nDate: $DATE" | mail -s ""Alert: Remote Access Granted to `id -un`" email@host.net"
fi

Разрешаем root только с определенного IP

Добавляем в файл /etc/ssh/sshd_config

PermitRootLogin no

Match host 192.168.13.13, 5.9.111.222
   PermitRootLogin yes

POSSIBLE BREAK-IN ATTEMPT

Как закрыть пользовательскую SSH сессию (pts)

[~]# w
 09:16:04 up 23 days, 23:26,  2 users,  load average: 0.16, 0.17, 0.23
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
secure   pts/0    192.168.1.187    17Nov17 15days  5:10   0.05s sshd: secure [priv]
secure   pts/1    192.168.13.7    09:15    0.00s  0.01s  0.00s w
[~]# pkill -HUP -t pts/0

Система

Сортировка по CPU/RAM

via

Наибольшее использование RAM

# ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 1 | head

Наибольшее использование CPU

# ps -eo pmem,pcpu,pid,args | tail -n +2 | sort -rnk 2 | head

Топ 10 процессов CPU/RAM

# ps auxxx --sort=-rss  | head -11
# ps auxxx --sort=-%cpu | head -11

RSS - реальное количество занятой физической памяти.
VSZ - общее количество виртуальной памяти, отведенной данному процессу.

В терминах команды top, VSZ называется SIZE, а RSS называется RES.
В терминах команды htop, VSZ называется SHR, а RSS называется RES.

Полезный алиас для создания бэкапа конфига

via http://www.shkodenko.com/useful-alias-to-backup-and-edit-configuration-file-automatically/

Добавить в .bashrc

conf() { [ "$1" != "" ] && cp -fvp "$1" "$1"-`date +%Y-%m-%d-%H-%M`.bak; vim "$1"; }

To apply newly created alias without restarting run:

Команда

# conf /etc/httpd/conf/httpd.conf

Создаст копию файла /etc/httpd/conf/httpd.conf следующего вида: /etc/httpd/conf/httpd.conf-YYYY-MM-DD.bak

Посмотреть список изменений:

# diff -Nau /etc/httpd/conf/httpd.conf-YYYY-MM-DD-HH-MM.bak /etc/httpd/conf/httpd.conf

Как проверить работу почты из консоли

echo 'Текст письма' | mail -s 'Тема письма' bob@foobar.com
# php -r "mail('alice@foobar.com', 'Test PHPmail', 'Testing MTA');"

public key is not available: NO_PUBKEY

W: GPG error: Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY <KEY>
Как исправить:
# gpg --keyserver subkeys.pgp.net --recv <KEY> 
# gpg --export --armor <KEY> | sudo apt-key add -

Также может помочь такая строка:# wget example.com/path/keyname.gpg.key -O - | apt-key add -

Как узнать дату последней перезагрузки

# last reboot | head -1
reboot   system boot  2.6.32-504.23.4. Mon Jun 22 15:13 - 12:22 (175+21:09) 

via http://www.cyberciti.biz/tips/linux-last-reboot-time-and-date-find-out.html

Сеть

Время ответа сервера через curl

via http://www.dtulyakov.ru/curl.html

curl -s -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nAppCon time:\t%{time_appconnect}\nRedirect time:\t%{time_redirect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' -o /dev/null http://ya.ru

Коды ошибок wget

0    No problems occurred
1    Generic error code
2    Parse error — for instance, when parsing command-line options, the .wgetrc or .netrc…
3    File I/O error
4    Network failure
5    SSL verification failure
6    Username/password authentication failure
7    Protocol errors
8    Server issued an error response

Если по какой-то причине wget выдаёт Exited with return code = 5, то можно воспользоваться ключом –no-check-certificate

Как запустить wget/curl/ping с сабинтерфейса?

ping можно запустить с другого IP, но не с алиаса (eth0:1)

$ ping -I 192.168.13.254 <dest_host>

curl –interface <name>

--interface <name>

Perform an operation using a specified interface. You can enter interface name, IP address or host name. An example could look like:

 curl --interface eth0:1 https://www.example.com/

If this option is used several times, the last one will be used. 
$ curl --interface eth0:1 <dest_host>
$ curl --interface 192.168.13.254 <dest_host>
$ curl --interface foobar <dest_host>

wget

--bind-address=ADDRESS

    When making client TCP/IP connections, bind to ADDRESS on the local machine. ADDRESS may be specified as a hostname or IP address. This option can be useful if your machine is bound to multiple IPs. 

Пример

$ wget -qO- http://checkip.dyndns.com/ --bind-address <public_ip>
<html><head><title>Current IP Check</title></head><body>Current IP Address: <public_ip></body></html>

REMOTE HOST IDENTIFICATION HAS CHANGED

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
fc:f9:10:fe:5e:8e:02:3b:5b:4a:65:55:b3:6a:d8:f2.
Please contact your system administrator.
Add correct host key in /Users/macbook/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/macbook/.ssh/known_hosts:1
RSA host key for ukserverhd.zapto.org has changed and you have requested strict checking.
Host key verification failed.

[Process completed]
$ ssh-keygen -R foo.bar.com

Как узнать адрес хоста из консоли?

http://ifconfig.me/

lynx –dump http://ipecho.net/plain

dig +short myip.opendns.com @resolver1.opendns.com

curl -s http://whatismijnip.nl |cut -d " " -f 5 curl -s icanhazip.com curl -s http://ifconfig.me curl curlmyip.com

http://unix.stackexchange.com/a/194136

Список активных исходящих соединений на порты 25,80,443.

# lsof -nP -i :25,80,443 +c 15

Узнаем дату и время запуска процессов

# ps -eo pid,lstart,cmd

Файлы, каталоги, ФС

trim / ssd

Проверить, что TRIM доступен

# hdparm -I /dev/sdf | grep "TRIM"
   *    Data Set Management TRIM supported (limit 1 block)
   *    Deterministic read data after TRIM

Поначалу использовал пример sh+cron с первой страницы гугла (/etc/cron.weekly/fstrim.cron)

Баш

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

Крон

chmod +x /etc/cron.weekly/fstrim.cron

Но надо идти в ногу со временем и использовать systemd

fstrim.service

# cat /usr/lib/systemd/system/fstrim.service

[Unit]
Description=Discard unused blocks

[Service]
Type=oneshot
ExecStart=/usr/sbin/fstrim -a
# cat /usr/lib/systemd/system/fstrim.timer

[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true

[Install]
WantedBy=multi-user.target

Достаточно сделать

# systemctl enable fstrim.timer

Для LVM или зашифрованного раздела вероятно нужны дополнительные настройки, но это как-нибудь потом.

Быстро создать файл заданного размера

Нет, не dd.

fallocate -l 10G vm_image_10GB.img

Изменить время создания файла

Защита от одновременного запуска нескольких копий скрипта

flock -n /tmp/lock.txt -c "/home/user1/test.sh > test.log"

Удобочитаемый вывод команды mount

mount | column -t

Создать пустой random файл

Вариант с urandom. TODO изучить, как сделать через openssl.

dd if=/dev/urandom of=1GB.bin bs=1G count=1
// или так
dd if=/dev/urandom of=1GB.bin bs=64M count=16

Узнать время модификации файла

Удалить файлы старше 10 дней

$ find ./ -ctime +10 | xargs rm

Как узнать рабочий каталог запущенного процесса?

Для примера возьмем MySQL (Percona)

Смотрим PID

# pidof mysqld
15831

Посмотреть рабочий каталог можно с помощью команды pwdx (report current working directory of a process)

[root@sh ~]# pwdx 15831
15831: /var/lib/mysql

Но можно и так

# ls -l /proc/15831/exe
lrwxrwxrwx 1 root root 0 Jan 26 12:21 /proc/15831/exe -> /usr/sbin/mysqld

lsof

lsof -p $(pidof mysqld)
ls -l /proc/$(pidof -s mysqld)/fd/

Как найти самые большие файлы на диске

How Do I Find The Largest Top 10 Files and Directories On a Linux / UNIX / BSD?

CentOS5-specific Сортировка по размеру

$ du -hx * | awk '{printf "%s %08.2f\t%s\n", index("KMG", substr($1, length($1))), substr($1, 0, length($1)-1), $0}' | sort -r|cut -f2,3
$ du -hsxc * 2>/dev/null | sort -h

du -shx */

du -Pshx /* 2>/dev/null The -s option makes a summerize. h prints Mio, Gio, etc. x = stay in one filesystem (very useful). P = don't follow symlinks (which could cause files to be counted twice for instance).

du -Pshx .* * 2>/dev/null + hidden/system directories

Как узнать время последнего доступа и изменения файла

http://inet6.alphasca.net/как-узнать-время-последнего-доступа-и/

Принудительно запустить fsck при следующей загрузке системы

Установка прав (chmod) для файлов и каталогов

find * -type d -print0 | xargs -0 chmod 0755 # for directories
find . -type f -print0 | xargs -0 chmod 0644 # for files

или так

find /your/location -type d -exec chmod 755 {} \; for directories
find /your/location -type f -exec chmod 644 {} \; for files

Установить рекурсивно 644 для всех файлов и 755 для всех каталогов в текущей (pwd) директории

find . -type f -exec chmod 644 {} \;; find . -type d -exec chmod 755 {} \;

Установить 644 только для .php файлов

find . -type f -name '*.php*' -exec chmod 644 {} \; 

Установить 755 только для каталогов принадлежащих пользователю bob

find . -type d -user bob -exec chmod 0755 {} \; 

http://superuser.com/questions/91935/how-to-chmod-all-directories-except-files-recursively

Change UID and GID

In some rare cases - e.g. when changing a disk with home directories between distributions - it might be necessary to change recursively the GID and UID's for the new system: usermod -u <NEWUID> <LOGIN> groupmod -g <NEWGID> <GROUP> find / -user <OLDUID> -exec chown <NEWUID> {} \; find / -group <OLDGID> -exec chgrp <NEWGID> {} \;

Пользователи

Показать пользователей с shell доступом /bin/sh или /bin/bash

via http://www.shkodenko.com/get-list-of-linux-users-with-shell-access/

# cat /etc/passwd |egrep "/bin/.*sh" |cut -f1 -d':' |sort

Показать cron задания всех пользователей

via http://stackoverflow.com/questions/134906/how-do-i-list-all-cron-jobs-for-all-users

for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done

for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done </code>

Бонус - посмореть crontab пользователя, переключиться на редактор nano, отредактировать crontab

# crontab -u username -l
# export EDITOR=nano
Затем отредактируем задачи cron, которые запускаются под пользователем "userLogin":
# crontab -u username -e

Как очистить историю команд в bash

via https://bogachev.biz/2014/11/04/Как-очистить-историю-команд-в-Bash

Полностью удалить историю Bash

-c - Очистить файл истории
-w - Внести команды текущей сессии в файл с историей

$ history -cw

Удалить определенную строку из истории Bash

d - Удалить строку с указанным номером из истории

$ history -dw 352

Очистить историю команд текущей сессии

-r - Прочитать файл с текущие историей и добавить его содержимое к списку истории команд

$ history -r

Не сохранять команду в истории Bash

Выполнить команду не занося ее в историю Bash:

$ <пробел>команда

Удалить пользователя из группы

Утилита gpasswd

$ sudo gpasswd -d dx nginx     
Removing user dx from group nginx
$ id dx
uid=1000(dx) gid=1000(dx) groups=1000(dx)

Удалить все secondary группы юзера и оставить primary

$ sudo usermod -G "" user_name

Обсуждение

StepNus, 2019/06/04 21:43

Propecia Causes Impotence Indomethacin Online Order No Rx Usa Amoxicilline <a href=http://6drugs.com>buy cialis online</a> Viagra Vs

Только авторизованные участники могут оставлять комментарии.
This website uses 🍪 for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
linux/bash/tnt.txt · Последние изменения: 2019/05/21 00:25 — dx