Ruby를 통한 쉘 명령 실행; 퓨리 CLI 디펜스 1선

4937 단어 bashrubyclishell
원래 게시됨https://darnahsan.medium.com/shell-command-execution-via-ruby-fury-the-first-line-of-cli-defence-20f5e248e255 게시일: 2020년 5월 22일

우리는 모두 명령줄을 한두 번 두드려본 적이 있습니다. 터미널을 사용하여 명령을 실행하면 GUI가 없을 때 슈퍼 인간처럼 느껴집니다.



여러 도구로 작업할 때 작업하려는 언어에 대한 라이브러리, SDK 또는 API 형태의 각 도구에 대한 지원을 찾지 못할 수 있습니다. Python은 데이터 과학으로, Ruby는 스크립팅으로 알려져 있는 것과 같이 각 언어는 틈새 시장을 구축했습니다. 엔터프라이즈용 Rails 또는 Java를 사용하는 웹. 그들은 모두 동등하게 모든 작업을 수행할 수 있습니다. 즉, 입력을 받고 출력을 제공합니다. 많은 도구가 작성되고 Unix/Linux 환경의 해당 인터페이스가 명령줄로 공유되는 것을 볼 수 있습니다. 이러한 인기 있는 예 중 하나는 cURL입니다. cURL이 C로 작성된 libcurl을 기반으로 한다는 것을 알고 계셨습니까? 이제 Ruby에서 C로 작성된 라이브러리를 어떻게 사용합니까? Create A Ruby C extension , 모든 기능을 매핑하고 유지 관리합니까? 또는 도구의 명령줄 인터페이스를 사용하고 코드에서 명령을 실행합니다. 일부 타사 도구를 실행하는 데만 필요한 것은 아닙니다. 시스템을 모니터링하고, 파일을 조작하고, 실행 중인 프로세스를 확인하고 처리할 수 있습니다. Unix/Linux 환경에는 작업을 수행할 때 매우 견고한 도구가 있습니다. 그들은 전투 테스트를 거쳤으며 grep tail sed awk less ps | 그리고 더 많은.

시간이 지남에 따라 CLI 도구를 사용하여 서비스에 액세스하는 것이 공식적으로 지원되는 라이브러리 또는 사용 가능한 기능 전체 라이브러리가 없을 수 있으므로 더 적합한 상황에 도달하게 됩니다. 예를 들어 특정 시간에 AWS와 Google Cloud는 클라우드 라이브러리에 대한 훌륭한 Ruby 지원을 제공하지 않았으며 다른 많은 사람들은 Rails의 인기로 인해 Ruby가 이제 웹 언어로 더 선호되는 것과 같은 경로를 따릅니다.

Git 및 Xcode 빌드 도구로 작업해야 할 때 Ruby를 통해 쉘 명령을 실행하는 사용법을 스크립팅해야 한다는 아이디어를 얻었습니다. Ruby에는 exec, system 및 %x() 또는 *Backticksc *와 같은 쉘 명령을 실행하는 몇 가지 방법이 있지만 가장 간단한 방법은 백틱을 사용하는 것입니다. 목적은 여러 쉘 명령을 실행하고 출력을 얻는 것이었습니다. 실행해야 하는 일련의 명령을 설정하고 명령을 실행하고 출력을 캡처하고 반복적으로 사용하거나 더 많은 명령으로 확장하기 위한 다른 루비 구문에 대해 걱정하지 않고 쉘 명령을 실행하는 표준 인터페이스를 제공할 수 있습니다. 이 Ruby Gem a.k.a Fury를 사용하는 방법.


아산다르 / 격노


(닉) 명령줄 사용에 대한 Fury 인류의 첫 번째 방어선




Github repo는 Gitlab repo의 미러입니다.
(Nick) Fury 명령줄 사용에 대한 인류의 첫 번째 방어선
여러 셸 명령을 실행하고 출력을 가져오는 gem 버전Command Service 입니다. 이를 통해 실행해야 하는 일련의 명령을 설정할 수 있으며 명령을 실행하고 출력을 캡처하기 위한 다른 루비 구문에 대해 걱정할 필요 없이 셸 명령을 실행할 수 있는 표준 인터페이스를 제공할 수도 있습니다.

용법

require 'fury'
fury = Fury.new('echo Hell knows no Fury')
fury.execute # executes command and can be used again
fury.reset_cmd! # Used to clear command queue
fury = Fury.new('echo gonna have to ask you to exit the donut')
fury.execute! # Resets the command queue after execution to use for new command
# Execute command without creating a command queue
Fury.run_now('echo Director Fury is no longer in command. Override order 7-Alpha-1-1.')
#commands can be added to the queue for execution


View on GitHub

용법



fury = Fury.new('echo Hell knows no Fury')
fury.execute # executes command and can be used again

fury.reset_cmd! # Used to clear command queue

fury = Fury.new('echo gonna have to ask you to exit the donut')
fury.execute! # Resets the command queue after execution to use for new command

#commands can be added to the queue for execution ,
#commands are combined using ';' for shell execution

fury = Fury.new('echo Hell knows no Fury')
fury.execute
fury << 'echo gonna have to ask you to exit the donut'
fury << 'echo Director Fury is no longer in command. Override order 7-Alpha-1-1.'
fury.execute!

#commands can be added to the queue for execution ,
#commands can be combined using desired separator for
#shell execution

fury = Fury.new('echo Hell knows no Fury')
fury.execute
fury.join('&')
fury.queue 'echo gonna have to ask you to exit the donut'
fury.join('&')
fury.queue 'echo Director Fury is no longer in command. Override order 7-Alpha-1-1.'
fury.execute!

여기 Gem의 기본 사용법이 있습니다. 명령줄에서 사용할 수 있는 모든 도구를 실행하는 데 사용할 수 있습니다. 나는 커맨드 라인 마법을 수행하고 더 고급이며 아마도 뛰어난 기능을 가진 십여 개의 gem이 있다는 것을 알고 있지만 이 gem의 목적은 그것들을 대체하는 것이 아니라 쉘 명령을 실행하고 출력을 캡처하기 위한 간단한 인터페이스를 갖는 것입니다. 종속성의 오버헤드 없이 추가 처리를 수행합니다. 그래서 어벤져스 세계에서 초능력이 없는 누군가가 필요한 것을 제공하는 분노라는 이름을 붙였습니다.

좋은 웹페이지 즐겨찾기