쉘에서 일반적인 커맨드 대체에 대한 예시이다.


$ filename=/home/www/file1

$ firstchar=$(echo $filename | cut -c1)



/를 ^로 변경한다


$ echo $filename | tr "$firstchar" "^"

^users^steve^memos

$ filename=$(echo $filename | tr "$firstchar" "^")    

$ echo $filename

^users^steve^memos

$




커맨드 대체는 중첩될 수 있다.  $()안에 $()을 추가할 수 있는 커맨드 대체이다. 


변수에 첫 번째 문자가 나타날 때마다 다른 문자로 변경하려고 한다고 가정한 예시를 살펴본다.



$ filename=/home/www/file1

$ echo $filename | tr "$(echo $filename | cut -c1)" "^"

^home^www^file1



$ filename=$(echo $filename | tr "$(echo $filename | cut -c1)" "^")

$ echo $filename

^home^www^file1

$

Posted by '김용환'
,

[ruby] http call 예시

Ruby 2017. 1. 6. 16:16




Ruby로 작성한 아주 간단한 Http 호출 예시 코드이다. 


require 'net/http'

require 'uri'

require 'json'


class Host

   def initialize(ip)

      @ip = ip

   end


   def http_req

      uri = URI('http://host.google.io/views?ip=' + @ip)

      http = Net::HTTP.new('host.google.io', 80)

      req = Net::HTTP::Get.new(uri.request_uri)

      http.open_timeout = 5

      http.read_timeout = 20

      response = http.request(req)

      if response.code.to_i == 200

        return response.body

      else

        raise Exception.new("#{response.code} to #{uri}\n#{response.body}")

      end

   end


   def get_host

     json = JSON.parse(http_req)

     json["hostname"]+ ", " + json["name"]

   end

end






'Ruby' 카테고리의 다른 글

gem 설치 디버깅하기  (0) 2017.10.20
ruby zookeeper  (0) 2017.02.07
[capistrano] 다른 task 호출하기  (0) 2016.12.07
ruby on rails 애플리케이션 실행하기  (0) 2016.10.12
[ruby] File 존재 여부 확인할 때 홈 디렉토리 주의  (0) 2016.08.18
Posted by '김용환'
,



반복적으로 해야 할 작업들이 있다면, xargs -n1을 사용하면 편리한다.


예를 들어, 다음처럼 hosts라는 장비 목록 파일에 장비 정보를 매개변수로 받아 먼가를 처리하는 코드(host.rb)를 사용할  때 xargs -n1을 사용할 수 있다. 



$ cat hosts

a.google.io

b.google.io

c.google.io


$ cat hosts | xargs -n1 ruby host.rb


Posted by '김용환'
,