скрипт bash для закрытия порта

Может кто-то проверить, что я делаю неправильно здесь:

killp() {sudo kill $(sudo lsof -t -i:"$@"); l; }

Я хочу обобщить этот случай на любой порт.

sudo kill $(sudo lsof -t -i:22)
0
задан 4 April 2017 в 04:10

9 ответов

"$@" расширяется до всех параметров функции в виде отдельных слов. killp 22 33 затем будет расширяться до ...lsof -t -i:22 33, что может быть или не быть тем, что вы хотите. Если это не так, используйте вместо "$1" только первый аргумент.

Возможно, что-то вроде -sTCP:LISTEN тоже полезно, если вы хотите закрыть только порт прослушивания (сервер), а не исходящие соединения.

0
ответ дан 18 July 2018 в 15:35

Я тоже понял это. вроде. Работает.

killp() {sudo kill $(sudo lsof -t -i:"$@")}

У меня был пользовательский псевдоним для l (alias l="LC_COLLATE=C ls -gAG -x -1 --group-directories-first --sort=extension"), который здесь не нужен.

0
ответ дан 18 July 2018 в 15:35

Что-то вроде этого,

killp () { sudo kill `lsof -t -i:$*` }
0
ответ дан 18 July 2018 в 15:35

"$@" расширяется до всех параметров функции в виде отдельных слов. killp 22 33 затем будет расширяться до ...lsof -t -i:22 33, что может быть или не быть тем, что вы хотите. Если это не так, используйте вместо "$1" только первый аргумент.

Возможно, что-то вроде -sTCP:LISTEN тоже полезно, если вы хотите закрыть только порт прослушивания (сервер), а не исходящие соединения.

0
ответ дан 24 July 2018 в 20:40
  • 1
    о, классно! теперь я знаю, что такое «$ @». и "$ 1" имею в виду. Большое спасибо за объяснение нотации. – el347 4 April 2017 в 22:22

Я тоже понял это. вроде. Работает.

killp() {sudo kill $(sudo lsof -t -i:"$@")}

У меня был пользовательский псевдоним для l (alias l="LC_COLLATE=C ls -gAG -x -1 --group-directories-first --sort=extension"), который здесь не нужен.

0
ответ дан 24 July 2018 в 20:40
  • 1
    Ответ Ник лучше. Просто. Судо также не нужно в моей функции – el347 4 April 2017 в 04:06

что-то вроде этого,

killp () { sudo kill `lsof -t -i:$*` }
0
ответ дан 24 July 2018 в 20:40
  • 1
    Спасибо. Мне понравилось, что вы публикуете, но у меня нет достаточного количества очков для того, чтобы мой голос был видимым. – el347 4 April 2017 в 03:55
  • 2
    Я не думаю, что вы можете sudo использовать функцию оболочки, и до тех пор, пока sudo очищает среду, даже export -f killp не помогает. Вам нужно будет поместить его в сценарий. – ilkkachu 4 April 2017 в 19:06
  • 3
    О, вы правы, sudo не будет работать, если пользователь root не установит эту функцию bash, поэтому, вероятно, лучше использовать сценарий оболочки. – Nick Rodriguez 4 April 2017 в 21:47

"$@" расширяется до всех параметров функции в виде отдельных слов. killp 22 33 затем будет расширяться до ...lsof -t -i:22 33, что может быть или не быть тем, что вы хотите. Если это не так, используйте вместо "$1" только первый аргумент.

Возможно, что-то вроде -sTCP:LISTEN тоже полезно, если вы хотите закрыть только порт прослушивания (сервер), а не исходящие соединения.

0
ответ дан 31 July 2018 в 23:41
  • 1
    о, классно! теперь я знаю, что такое «$ @». и "$ 1" имею в виду. Большое спасибо за объяснение нотации. – el347 4 April 2017 в 22:22

Я тоже понял это. вроде. Работает.

killp() {sudo kill $(sudo lsof -t -i:"$@")}

У меня был пользовательский псевдоним для l (alias l="LC_COLLATE=C ls -gAG -x -1 --group-directories-first --sort=extension"), который здесь не нужен.

0
ответ дан 31 July 2018 в 23:41
  • 1
    Ответ Ник лучше. Просто. Судо также не нужно в моей функции – el347 4 April 2017 в 04:06

Что-то вроде этого,

killp () { sudo kill `lsof -t -i:$*` }
0
ответ дан 31 July 2018 в 23:41
  • 1
    Спасибо. Мне понравилось, что вы публикуете, но у меня нет достаточного количества очков для того, чтобы мой голос был видимым. – el347 4 April 2017 в 03:55
  • 2
    Я не думаю, что вы можете sudo использовать функцию оболочки, и до тех пор, пока sudo очищает среду, даже export -f killp не помогает. Вам нужно будет поместить его в сценарий. – ilkkachu 4 April 2017 в 19:06
  • 3
    О, вы правы, sudo не будет работать, если пользователь root не установит эту функцию bash, поэтому, вероятно, лучше использовать сценарий оболочки. – Nick Rodriguez 4 April 2017 в 21:47

Другие вопросы по тегам:

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