Я сам по себе неплохо разбирался и тестировался, но я не могу найти лучший способ достичь этой цели. Я хотел бы иметь bash one liner, который найдет скрипт на машине, выполнит сценарий и сможет добавить ключи или необходимую информацию в моем случае для успешного выполнения сценария.Bash - найти сценарий и выполнить с помощью опций
Чтобы получить немного более конкретно, я в Kali Linux, и я запустить команду найти так:
найти pattern_create
, которая возвращает:
/USR /share/metasploit-framework/tools/pattern_create.rb
Итак, я подумал о том, чтобы связать это с xargs, чтобы запустить сценарий следующим образом:
найти pattern_create | xargs рубин
, но, конечно, я не мог указать параметры мне нужно, что бы запустить скрипт успешно, который был бы:
рубин/USR/доли/Metasploit-рамки/инструменты/pattern_create .rb 2700
Я придумал работу, но я чувствую, что это немного неряшливо, и это может быть сделано легче, и именно там я надеюсь, что смогу получить какой-либо ввод/обратную связь.
Я узнал, что я могу запустить:
pattern_create = $ (найти pattern_create) & & рубин $ pattern_create 2700
, чтобы получить именно то, что мне нужно, но я имею дело с окружающей средой переменные, которые я бы не хотел, когда это делалось часто. Я надеялся понять это с помощью xargs или, возможно, даже более чистым способом, если это возможно. Я знаю, что это можно легко сделать с помощью find -exec, но это не сработает в моем случае, когда я не там, где хранится скрипт.
Любая помощь была бы потрясающей, я ценю время каждого. Спасибо.
Это идеальный вариант! Я понимаю осторожность при выдаче этой команды.Мои мысли состояли в том, чтобы проверить, что сценарий есть, и я узнаю его 'locate', а затем '↑' назад, чтобы найти '. Затем переписываем команду с вашим предложением и добавляем необходимые аргументы. В конечном счете, я писал это в xclip так: 'ruby $ (locate pattern_create) 2700 | xclip -selection c' –
Matthew
@Matthew. Ваш подход в порядке, ИМО. Если вы просто не хотите иметь переменные в своей среде, вы можете * unset * it: 'var = $ (locate pattern_create) && ruby $ var 2700; unset var'. Кроме того, имейте в виду, что 'locate' использует базу данных, которая может не иметь до текущей информации. Он может даже не найти файл, который действительно существует в вашей системе. Команда 'find' - лучший выбор. –
Есть ли лучший способ использовать find, когда вы не уверены в точном пути? Я не был уверен, есть ли у этой способности или нет. – Matthew