ruby+sourceinsight+gmake 유 닉 스 개발 환경 구축

최근 에 작은 프로그램 을 만들어 인터넷 에서 데 이 터 를 캡 처 하고 처리 했다.
절 차 는 대체로 이렇다.
자바 는 spider 를 써 서 hibenate 를 통 해 postgresql,maven 을 기록 하고 Maven 을 crond 에 두 었 습 니 다.인터넷 에 필요 한 데이터 가 나타 나 는 대략적인 시간 대 는 자동 으로 운행 된다.
셸 과 psql,sed 명령 으로 데이터베이스 에서 인터넷 에서 잡 은 데 이 터 를 꺼 내 data.ini 파일 에 넣 기;
c+stl 은 작은 프로그램 을 써 서 data.ini 를 씹 고 stdout 에 출력 합 니 다.
sed 명령 과 psql 로 데이터 베 이 스 를 다시 씁 니 다.
복잡 한 것 은 예전 의 많은 작은 절 차 를 종합 하여 이번 절 차 를 완 성 했 기 때문이다.
그 중에서 그 c+stl 프로그램 은 원래 vc 2005 에서 그것 을 freebsd 에 이식 한 것 이다.sourceinsight 편집 에서 스 크 립 트 언어 를 서버,gmake 에 보 낸 후 피드백 정보(컴 파일 오류 등)를 읽 고 줄 로 찾 습 니 다.
perl 을 설치 하기 시 작 했 습 니 다.반나절 동안 했 습 니 다.작은 ssh 로그 인 을 할 수 없습니다.어떤 Expect 가 지원 하지 않 는 지 등 이 있 습 니 다.
나중에 루비 를 썼어 요.직 설 적 이에 요.   ,make_remote.rb:
require 'net/ssh'
require 'net/sftp'
require 'find'

local_path = "#{ARGV[1]}"
puts "local path:#{local_path}"
remote_repo =  "/usr/home/zh/project"
remote_path = "#{remote_repo}/#{ARGV[0]}"
puts "remote path:#{remote_path}"
file_perm = 0600
dir_perm = 0700


def do_cmd( session ,cmd)
  session.open_channel do |channel|
     channel.on_data do |ch, data|
      puts "#{data}"
    end
    channel.exec "#{cmd}",true
  end
end


puts 'Connecting to remote server......'

Net::SSH.start('218.193.237.11', 'zh', '') do |ssh|

ssh.sftp.connect do |sftp|
 puts 'Checking for files which need updating'
 Find.find(local_path) do |file|
   next if File.stat(file).directory?
   local_file = "#{file}"
   remote_file = remote_path + local_file.sub(local_path, '')

   begin
     remote_dir = File.dirname(remote_file)
     sftp.stat(remote_dir)
   rescue Net::SFTP::Operations::StatusException => e 
     raise unless e.code == 2
     sftp.mkdir(remote_dir, :permissions => dir_perm)
   end

   begin
     rstat = sftp.stat(remote_file)
   rescue Net::SFTP::Operations::StatusException => e
     raise unless e.code == 2
      puts "Copying #{local_file} to #{remote_file}"
    sftp.put_file(local_file, remote_file)
     sftp.setstat(remote_file, :permissions => file_perm)
     next
   end

   if File.stat(local_file).mtime > Time.at(rstat.mtime)
     puts "Copying #{local_file} to #{remote_file}"
     sftp.put_file(local_file, remote_file)
   end
 end
end

puts 'making project......'

shell = ssh.shell.sync
out=shell.send_command( "cd #{remote_path}&&gmake #{ARGV[2]}")
puts out.stderr

if ARGV[2]=='run'
 puts out.stdout
end

puts 'Disconnecting from remote server......'
end

(비밀 번 호 를 입력 하지 않 아 도 putty 설정 을 읽 을 것 같 습 니 다?)
사용 한 것 요약:sourceinsight,셸,c++,자바,maven 2,postgres,ruby,freebsd,boost serialization
지금 이 물건 은 완전히 자동 입 니 다.웹 데 이 터 를 캡 처 하고 자동 으로 계산 합 니 다.그때 결 과 를 보면 됩 니 다.

좋은 웹페이지 즐겨찾기