newLISP运行scp命令并打印进度

如果在终端直接运行scp命令,会看到类似的输出

scp train.html root@your-host:/path/of/your/folder
train.html                                    100%  149KB 149.4KB/s   00:00    


如果用newlisp的exec运行这个命令,得到的结果却是

()


如何获得上面的输出?

train.html                                    100%  149KB 149.4KB/s   00:00 


首先要获得scp的输出,参考这个: http://stackoverflow.com/questions/202432/how-to-best-capture-and-log-scp-output

依靠script命令,可以运行scp,并将输出结果写入日志文件

script -q -c \"scp train.html root@your-host:/path/of/your/folder" > scp.log


然后用newlisp exec运行上面的命令,运行后,读取文件scp.log的内容并显示出来

(println "run the following command now:")
(println syn-cmd)

(println (exec syn-cmd))
(set 'in-file (open "scp.log" "read"))
(while (read-line in-file)
  (println (current-line)))
(close in-file)

syn-cmd的值就是上面的script命令

现在结果打印出来了

train.html                                    100%  149KB 149.4KB/s   00:00

仍有不足,以后完善:

1. script运行scp的结果return code如何获取,虽然有-e参数,但是newlisp exec好像没有得到

2. scp.log里面有多行,但是用(while ... (println)) 只显示了最后一行,有点奇怪。

3. 最好能够实时的获得scp的输出进度,而不是等完成之后。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值