Включите одно из сообщений поддержки активности SSH, например, включив TCPKeepAlive
или ClientAliveInterval
в конфигурации sshd сервера .
Точно так же в конфигурации клиента можно использовать TCPKeepAlive
и ServerAliveInterval
.
TCPKeepAlive
раньше было просто KeepAlive
, если у вас старая версия OpenSSH.
Сообщения поддержки активности TCP - это функция, которая является частью TCP и работает вне зашифрованного туннеля, созданного SSH. Так что кто-то может, например, обмануть их, притворившись, что соединение все еще открыто, хотя это не так.
ClientAlive / ServerAlive работает внутри зашифрованного туннеля, поэтому его нельзя подделать (но я считаю, что это новый вариант и, конечно, требует больше процессорного времени).
#!/usr/bin/env python
import sys
for y in open(sys.argv[1]):
y = int(y)
x += 1
while x < y:
print x
x += 1
-121--290335- Примечание: Вместо кода PHP ниже, если вы хотите отследить все git commits (а не только те, которые зафиксированы с помощью PHP), должна быть возможность установить пост-commit hook с аналогичным выходом.
Сразу после написания вопроса я наткнулся на это действительно простое руководство . Исходя из этого, я сделал следующее:
Я не тестировал это без установки разрешений, но я предполагаю, что это необходимо.
sudo mkdir /var/log/gitweb
sudo chown: www-data /var/log/gitweb
Эта строка кода выполняется каждый раз, когда я запускаю git commit
в коде php. Новые строки заменяются пользовательской последовательностью, так что каждая фиксация находится в собственной строке (насколько мне известно, Logwatch может работать только построчно). При анализе с помощью Logwatch он будет заменен на новые строки.
shell_exec('(git log -1 --date=iso --name-status | awk 1 ORS="[NEWLINE_HERE]" ; echo) >> /var/log/gitweb/gitweb.log');
# /etc/logwatch/conf/logfiles/gitweb.conf
LogFile = gitweb/*.log
Archive = gitweb/*.gz
*ExpandRepeats
Не совсем уверен, что делает * ExpandRepeats, но это было в руководстве, с которым я связался.
# /etc/logwatch/conf/services/gitweb.conf
Title = "Git commits"
LogFile = gitweb
Это делает две вещи:
Я знаю абсолютно нулевое значение perl (я посмотрел другие сценарии Logwatch для справки), поэтому
use Logwatch ':dates';
my $filter = TimeFilter('%Y-%m-%d %H:%M:%S');
while (defined(my $ThisLine = <STDIN>)) {
if ($ThisLine =~ /$filter/) {
$ThisLine =~ s/\[NEWLINE_HERE\]/\n/g;
print $ThisLine;
}
}
exit(0);
# /etc/logrotate.d/gitweb
/var/log/gitweb/*log {
daily
# keep 10 old logs
rotate 10
# don't do anything if the log is missing
missingok
# don't do anything if the log is empty
notifempty
# zip the archived logs
compress
}
-121--290276- Если не требуется переместить почтовый магазин; просто восстановите конфигурацию до значений по умолчанию.
Эта настройка хранит сообщения электронной почты в /var/spool/mail/< имя _ пользователя >
вместо home
, что означает, что любой устанавливаемый MUA будет знать, где его найти без какой-либо перенастройки.
Если вы просто тестируете сантехнику, то использование mail / sendmail из командной строки будет работать нормально (как и telnet localhost 25). Если вы не получаете это письмо, проверьте / var / log на наличие ошибок и опубликуйте их для помощи в устранении.
Если вы действительно хотите отправлять и получать электронную почту из командной строки, вам нужен агент пользователя почты (MUA), а не агент передачи почты (MTA) [3]. Типичный ответ - Mutt [1], хотя есть и другие отличные клиенты командной строки на выбор [2].
[2] http://en.wikipedia.org/wiki/List_of_email_clients # Текстовый
[3] http://en.wikipedia.org/wiki/Email_agent_%28infrastructure%29