Задание Jenkins получить эксклюзивность для агента (Slave)?

В настоящее время я использую плагин EC2 с Jenkins, поэтому, когда ему нужно больше агентов (подчиненных), он запускает их (или убивает их, когда они не нужны). До сих пор агенты были настроены с двумя слотами заданий, и это нормально. Однако есть одно конкретное задание, для которого требуется весь экземпляр EC2.

Итак, как я могу заблокировать выполнение других заданий на агенте, пока выполняется это конкретное задание? Обычно решением было бы отфильтровать задание по одному набору специальных агентов, но я бы не хотел создавать совершенно новый парк агентов только для этого одного задания. Попробуйте ForceCommand в sshd_config, но он не позволит мне войти, если я положу его туда мой сценарий. Match User * X11Forwarding no ...

Я хочу создать сценарий для отслеживания входящих ssh-подключений к серверу. Попробуйте ForceCommand в sshd_config, но он не позволит мне войти, если я положу его туда мой сценарий.
Подобрать пользователя *
X11 Номер пересылки
AllowTcpForwarding №
ForceCommand ssh /usr/local/include/ssh.sh

#!/bin/bash
DP=/usr/local/include;
DT=$(w | grep pts | grep -v :0.0 > $DP/tmp.log);
FDATE=$(date +%Y-%m-%d);
while read -r values
do
PTSU=$(echo $values |  awk '{print $2}');
IP=$(echo $values |  awk '{print $3}');
LTIME=$(echo $values |  awk '{print $4}');
USA=$(echo $values |  awk '{print $1}');


  PROC=$( cat /proc/net/arp | grep $IP );
  MAC=$(echo $PROC |  awk '{print $4}');

  echo "$USA $PTSU $IP $MAC $FDATE $LTIME" >>$DP/ssh.log;

done < $DP/tmp.log
rm $DP/tmp.log
-1
задан 24 March 2017 в 22:09
1 ответ

ForceCommand действительно должен выполнить команду, которую хочет запустить пользователь. Возможно, оболочка, возможно, демон sftp, rsync или что-то еще. Ваш сценарий не делает ничего, кроме попытки записать нужные вам данные. Итак, демон ssh запускает ваш сценарий, запускает его, и, когда сценарий существует, сеанс ssh завершается. Команда ForceCommand должна либо продолжать работать, чтобы сеанс оставался открытым, либо запускать что-то еще, что поддерживает сеанс открытым.

Этот сценарий немного беспорядочный. ForceCommand запускается с разрешениями пользователя. Надеюсь, у ваших пользователей нет прав на запись в / usr / local / include , этот каталог должен быть доступен для записи только root, он не предназначен как папка с данными.

У вас есть жестко закодированный временный файл имя. Это как минимум может привести к ошибкам, если два пользователя войдут в систему одновременно. В зависимости от безопасности этого каталога, в котором вы храните данные, его можно использовать как обходную защиту. Кажется, у вас нет какой-либо фильтрации, чтобы ограничить его текущим активным пользователем.

Большую часть того, что вы, кажется, пытаетесь записать, демон SSH уже будет регистрировать, просто увеличьте вашу многословность ( LogLevel VERBOSE )и извлеченные данные попадут в ваш системный журнал вместо того, чтобы пытаться создать для этой цели какой-то хакерский сценарий.

Единственное, что не было бы частью стандартного подробного журнала sshd, - это MAC-адрес, который вы получаете из arp команда, в которой я действительно сомневаюсь, что это так полезно в любом случае. Но если вы действительно думаете, что вам нужно знать MAC-адреса, возможно, установите что-нибудь вроде arpalert для регистрации ассоциаций Mac и IP в вашем системном журнале.

3
ответ дан 5 December 2019 в 19:12

Теги

Похожие вопросы