проверить файл - строка за строкой на соответствие критериям

Не существует общего способа туннелирования каждого интернет-трафика через SOCKS-прокси. Однако есть конкретные способы для довольно многих протоколов - но не для всех. SOCKS5 поддерживает TCP и UDP трафик, но не ICMP, насколько я знаю. Таким образом, вы не можете использовать традиционный ping через такой прокси, например.

Вот список проксирующих клиентов (большинство из них поддерживают SOCKS5): Link

Я лично пробовал клиентскую часть Dante и proxychains (оригинал, а не преемник -ng) на Linux, и оба работали у меня (proxychains оказался немного стабильнее). Оба работают, перенаправляя запросы API сокетов от приложения (поэтому они должны установить переменную окружения LD_PRELOAD для приложения) на свою собственную библиотеку. Это может создать проблему, если приложение использует двоичный файл setuid, так как LD_PRELOAD и функция setuid несовместимы по безопасности. Кроме того, не все API-функции, связанные с сетью, перенаправляются, поэтому некоторые странные приложения могут столкнуться с проблемами (например, когда приложение хочет получить список сетевых интерфейсов и IP-адресов).

Эти прокси-клиенты типа LD_PRELOAD обычно не предназначены для работы на системном уровне, предполагается, что вы должны изменить способ запуска приложения (префикс приложения с прокси-клиентом). Теоретически, вы можете установить переменную окружения LD_PRELOAD для всей системы или сеанса входа в систему, и это может даже сработать в некоторых случаях, однако, вы можете столкнуться с тонкими проблемами. Кроме того, вы не сможете легко включить или выключить перенаправление без перезапуска приложений.

1
17.04.2018, 18:52
1 ответ

С помощью awk;

$ awk 'NR==FNR{ seen[$0]++;next } 
    { print $0 (($0 in seen)?" TRUE":" FALSE")}' userbanned.list alluser.list
user1 FALSE
user4 TRUE
user2 TRUE
user4 TRUE
user5 TRUE
user3 FALSE
user2 TRUE

awkсломать -вниз:

NR==FNR    - Execute next block for 1st file only "userbanned.list"

seen[$0]++ - Create an associative array with the key as '$0' (whole line) of
             file "userbanned.list"

next       - continue read next line of file "userbanned.list"

print $0   - Print the whole line of "alluser.list" file,, now FNR reset to 1 
             since next file read by awk, but NR is still incrementing until the last 
             line from last file read.

(($0 in seen)?" TRUE":" FALSE")
           - This known as Ternary operator '(condition)?"If-True":"If-False"'. It's
             short form of if/else/ and checks if current line in file "alluser.list" 
             exists in array then print "TRUE" else "FALSE".

Я также вижу, что у вас есть дублированные пользователи, которые будут печатать дважды или более, вы можете уникализовать строки в обоих файлах, а затем передать их в awk, как показано ниже:

$ awk 'NR==FNR{ seen[$0]++;next } { print $0 (($0 in seen)?" TRUE":" FALSE")}
    ' <(sort -u userbanned.list) <(sort -u alluser.list)
user1 FALSE
user2 TRUE
user3 FALSE
user4 TRUE
user5 TRUE
1
27.01.2020, 23:43

Теги

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