小编xeo*_*eor的帖子

在python中创建漂亮的列输出

我试图在python中创建一个很好的列列表,用于我创建的命令行管理工具.

基本上,我想要一个列表,如:

[['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']]
Run Code Online (Sandbox Code Playgroud)

变成:

a            b            c
aaaaaaaaaa   b            c
a            bbbbbbbbbb   c
Run Code Online (Sandbox Code Playgroud)

使用普通标签不会在这里做,因为我不知道每行中最长的数据.

这与Linux中的'column -t'行为相同.

$ echo -e "a b c\naaaaaaaaaa b c\na bbbbbbbbbb c"
a b c
aaaaaaaaaa b c
a bbbbbbbbbb c

$ echo -e "a b c\naaaaaaaaaa b c\na bbbbbbbbbb c" | column -t
a           b           c
aaaaaaaaaa  b           c
a           bbbbbbbbbb  c
Run Code Online (Sandbox Code Playgroud)

我已经四处寻找各种python库来做到这一点,但找不到任何有用的东西.

python string list

95
推荐指数
9
解决办法
17万
查看次数

Docker中的默认私有注册表

我需要在Docker中设置我自己的私有注册表,通常保留所有内部Docker镜像.

为了使这更容易,我希望在内部设置我的Docker图像被调用project/component,就像你从https://index.docker.io/提取的普通Docker图像一样.

我确信,我永远不会从index.docker.io中获取这种格式的图像,所有这些图像都来自我们的内部索引器.即使是格式的图像imagename,centos也会从我们的内部存储库中提取出来.

那么,有没有办法让我更改默认索引器?或者至少将我的私有索引器从端口5000更改为默认尝试的东西; 即,从中获取图像private_indexer.internal/repo_name而不是private_indexer.internal:5000/repo_name.

将index.docker.io放在我们自己的dns中指向我们的内部ip是最好的解决方案吗?

docker docker-registry

26
推荐指数
1
解决办法
2万
查看次数

分段故障本身就是悬而未决

我今天在服务器上遇到了一些问题,现在我已经把它归结为它无法摆脱遇到段错误的进程.

在该过程发生seg-fault之后,该过程只是一直悬挂,而不是被杀死.

应该导致错误的测试Segmentation fault (core dumped).

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
 char *buf;
 buf = malloc(1<<31);
 fgets(buf, 1024, stdin);
 printf("%s\n", buf);
 return 1;
}
Run Code Online (Sandbox Code Playgroud)

使用编译和设置权限gcc segfault.c -o segfault && chmod +x segfault.

在有问题的服务器上运行此(并按下输入1次)会导致它挂起.我也在另一台具有相同内核版本(和大多数相同的软件包)的服务器上运行它,它得到seg-fault然后退出.

以下是strace ./segfault在两台服务器上运行后的最后几行.

糟糕的服务器

"\n", 1024)                     = 1
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
# It hangs here....
Run Code Online (Sandbox Code Playgroud)

工作服务器

"\n", 1024)                     = 1
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
+++ killed by SIGSEGV (core dumped) +++ …
Run Code Online (Sandbox Code Playgroud)

c c++ linux

16
推荐指数
1
解决办法
1666
查看次数

用python解析puppet-api yaml

我正在创建一个脚本,需要解析puppet输出的yaml输出.

当我再次提出请求示例https:// puppet:8140/production/catalog/my.testserver.no我会得到一些yaml回来看起来像:

--- &id001 !ruby/object:Puppet::Resource::Catalog
  aliases: {}
  applying: false
  classes: 
    - s_baseconfig
    ...
  edges: 
    - &id111 !ruby/object:Puppet::Relationship
      source: &id047 !ruby/object:Puppet::Resource
        catalog: *id001
        exported: 
Run Code Online (Sandbox Code Playgroud)

等等......问题是当我做一个yaml.load(yamlstream)时,我会得到一个错误:

yaml.constructor.ConstructorError: could not determine a constructor for the tag '!ruby/object:Puppet::Resource::Catalog'
 in "<string>", line 1, column 5:
   --- &id001 !ruby/object:Puppet::Reso ... 
       ^
Run Code Online (Sandbox Code Playgroud)

据我所知,这个&id001部分在yaml中得到支持.

有没有办法解决?我可以告诉yaml解析器忽略它们吗?我只需要yaml流中的几行,也许正则表达式是我的朋友在这里?以前做过任何yaml清理正则表达式的人吗?

您可以使用curl获取yaml输出,如:

curl --cert /var/lib/puppet/ssl/certs/$(hostname).pem --key /var/lib/puppet/ssl/private_keys/$(hostname).pem --cacert /var/lib/puppet/ssl/certs/ca.pem -H 'Accept: yaml' https://puppet:8140/production/catalog/$(hostname)
Run Code Online (Sandbox Code Playgroud)

我还在puppet mailinglist @ http://www.mail-archive.com/puppet-users@googlegroups.com/msg24143.html中找到了一些相关信息.但我不能让它正常工作......

python yaml puppet

14
推荐指数
1
解决办法
4450
查看次数

获取jq中的对象数组索引

我有一个看起来像这样的json对象(由...生成)i3-msg -t get_workspaces.

[
  {
    "name": "1",
    "urgent": false
  },
  {
    "name": "2",
    "urgent": false
  },
  {
    "name": "something",
    "urgent": false
  }
]
Run Code Online (Sandbox Code Playgroud)

我试图用来jq确定列表中的哪个索引号是基于select查询的.jq有东西叫index(),但它接缝只支持字符串?

使用类似的东西i3-msg -t get_workspaces | jq '.[] | select(.name=="something")'给我我想要的对象.但我想要它的索引.在这种情况下2(从0开始计数)

这有可能jq单独使用吗?

arrays json indexof jq

9
推荐指数
2
解决办法
6107
查看次数

npm package.json和docker(挂载......)

我正在使用Docker,所以这种情况可能看起来很奇怪.但我想/data在开发时将我的整个目录安装在我的docker容器中.

我的/data文件夹容器我的package.json文件,app目录和一堆其他东西.问题是我希望我的node_modules文件夹不是持久性的,只是package.json文件.

我已经尝试了几件事情,但package.jsonnpm这里给我很难...

  • package.json直接挂载文件会破坏npm.npm尝试在保存时重命名文件,这在安装文件时是不可能的.
  • 挂载父文件夹(/data)将挂载node_modules文件夹.
  • 我找不到任何配置选项将node_modules放在另一个文件夹外面/data,例如/dist
  • package.json/data/conf安装/data/conf的卷,而不是不会工作.我找不到任何方法来指定package.json路径npmrc.
  • package.json/data/conf和符号链接它/data/package.json不会工作.npm打破符号链接并用文件替换它.

在docker容器内来回传输数据是我现在正在做的事情.有点单调乏味......我也想要一个干净的解决方案..

node.js npm docker

8
推荐指数
3
解决办法
3778
查看次数

Javascript - 如果语法很奇怪

我正在查看其他人编写的一些代码,我注意到这个奇怪的javascript语法..基本上,它看起来像这样:

// This is understandable (but I dont know if it have relevance)
var re = new RegExp("^" + someVar + "_", "i");

// !!~ ??? What is this black magic?
if (!!~varA.search(re)) { ... }
Run Code Online (Sandbox Code Playgroud)

这是难以谷歌的事情之一..任何Javascript gurues可以解释这个?

javascript

5
推荐指数
1
解决办法
250
查看次数

Docker容器在现实生活中

我一直在关注这些教程,并且已经尝试了几天Docker,但我找不到任何"真实世界"的用法示例.

我怎样才能从外面与我的容器沟通?

我可以找到的所有示例最终都有一个或多个容器,它们可以与其他容器共享端口,但主机外部没有人可以访问其公开的端口.

拥有这样的容器的重点不在于它们中至少有一个需要从外面进入吗?

我找到了一个名为pipework的工具(https://github.com/jpetazzo/pipework),这可能对我有所帮助.但这是每个人都在测试Docker生产他们正在使用的工具吗?

让外面与我的容器交谈是必要的"黑客"吗?

linux virtualization lxc docker

4
推荐指数
1
解决办法
1215
查看次数

在读取(stdin)循环后暂停bash脚本

我正在制作一个脚本,该脚本通过管道(stdin)进行输入,如(other_command | my_script)中所示。但是,在阅读完整个stdin之后,我需要暂停脚本并等待用户按Enter。

这是一个示例脚本。

#!/bin/bash

if [[ -t 0 ]]; then
  echo "No stdin"
else
  echo "Got stdin"
  while read input; do
    echo $input
  done
fi

echo "Press enter to exit"
read
Run Code Online (Sandbox Code Playgroud)

它像这样工作;

$ echo text | ./script
Got stdin
text
Press enter to exit
$
Run Code Online (Sandbox Code Playgroud)

它跳过了我的决赛read

然而;

$ ./script
No stdin
Press enter to exit
stops here
$
Run Code Online (Sandbox Code Playgroud)

read从stdin阅读后,如何上班?有没有可以在Linux和OSX上都可以使用的解决方案?

linux bash stdin

4
推荐指数
1
解决办法
1035
查看次数

Python请求给我"坏握手"错误

使用像这样的Python 请求

import requests;
requests.get('https://internal.site.no')
Run Code Online (Sandbox Code Playgroud)

给我一个错误很多 已经 ;

SSLError: ("bad handshake: Error([('SSL routines', 'SSL23_GET_SERVER_HELLO', 'sslv3 alert handshake failure')],)",)
Run Code Online (Sandbox Code Playgroud)

但是,他们建议没有丢失的包装.即使设置也会verify=False给我带来同样的错误.Curl在尝试访问同一站点时没有错误.

版本:

  • 高山3.4
  • 请求2.12.1(在2.11.1中有效)
  • OpenSSL 1.0.2j 26 sep 2016

python ssl python-requests

4
推荐指数
2
解决办法
1万
查看次数