Now it's allow passing command line arguments to task now,the task macro is changed,it must have an argument vector now:
(task :deploy "deploy a file to remote machines" [file] (scp (file) "/home/user1")) And run with clojure controls.clj deploy release.tar.gz The "release.tar.gz" will be used as "file" argument for scp macro. clojure-control is still on development,any suggestion welcomed. On 7月24日, 下午9时41分, dennis <killme2...@gmail.com> wrote: > 1.What is clojure-control? > > The idea came from node-control(https://github.com/tsmith/node- > control). > Define clusters and tasks for system administration or code > deployment, then execute them on one or many remote machines. > Clojure-control depends only on OpenSSH and clojure on the local > control machine.Remote machines simply need a standard sshd daemon. > > 2.Quick example > > Get the current date from the two machines listed in the 'mycluster' > config with a single command: > > (ns samples > (:use [control.core :only [task cluster scp ssh begin]])) > ;;define clusters > (cluster :mycluster > :clients [ > { :host "a.domain.com" :user "alogin"} > { :host "b.domain.com" :user "blogin"} > ]) > ;;define tasks > (task :date "Get date" > (ssh "date")) > ;;start running > (begin) > > If saved in a file named "controls.clj",run with > > java -cp clojure.jar:clojure-contrib.jar:control-0.1-SNAPSHOT.jar > clojure.main controls.clj mycluster date > > Each machine execute "date" command ,and the output form the remote > machine is printed to the console.Exmaple console output > > Performing mycluster > Performing date for a.domain.com > a.domain.com:ssh: date > a.domain.com:stdout: Sun Jul 24 19:14:09 CST 2011 > a.domain.com:exit: 0 > Performing date for b.domain.com > b.domain.com:ssh: date > b.domain.com:stdout: Sun Jul 24 19:14:09 CST 2011 > b.domain.com:exit: 0 > > Each line of output is labeled with the address of the machine the > command was executed on. The actual command sent and the user used to > send it is displayed. stdout and stderr output of the remote process > is identified as well as the final exit code of the local ssh > command. > > 3.How to scp files? > Let's define a new task named deploy > > (task :deploy "scp files to remote machines" > (scp ("release1.tar.gz" "release2.tar.gz") "/home/alogin/")) > > Then it will copy release1.tar.gz and release2.tar.gz to remote > machine's /home/alogin directory. > > 4.More information please goto project homepage > > https://github.com/killme2008/clojure-control > > Any suggestion or bug reports welcomed. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en