小编Cal*_*leb的帖子

将pem键转换为ssh-rsa格式

我有一个der格式的证书,从这个命令我生成一个公钥:

openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Run Code Online (Sandbox Code Playgroud)

结果如下:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得这样的公钥?来自证书还是来自这个公钥?

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Run Code Online (Sandbox Code Playgroud)

这是通过以下命令获得的:

ssh-keygen -y -f private_key1.pem > public_key1.pub
Run Code Online (Sandbox Code Playgroud)

openssl openssh

132
推荐指数
7
解决办法
17万
查看次数

单个命令用于创建文件并设置其权限

我使用以下2个命令创建一个0B文件并将其extn设置为644

touch filename.ext
chmod 777 filename.txt
Run Code Online (Sandbox Code Playgroud)

我的问题是unix(korn shell)中是否有任何一个命令可以将这两个东西放在一起,也就是说创建一个具有所需权限的0B fil?

unix shell ksh file-permissions

28
推荐指数
6
解决办法
3万
查看次数

什么时候命令替换会产生比单独的相同命令更多的子shell?

昨天有人向我建议在bash中使用命令替换会导致产生不必要的子shell.该建议仅针对此用例:

# Extra subshell spawned
foo=$(command; echo $?)

# No extra subshell
command
foo=$?
Run Code Online (Sandbox Code Playgroud)

我认为这对于这个用例似乎是正确的.但是,快速搜索试图验证这会导致大量令人困惑和矛盾的建议.似乎流行的智慧说所有命令替换的使用都会产生一个子shell.例如:

命令替换扩展为命令的输出.这些命令在子shell中执行,其stdout数据是替换语法扩展的内容.(来源)

这看起来很简单,除非你继续挖掘,在这种情况下你会开始找到建议的参考,但事实并非如此.

命令替换不一定会调用子shell,在大多数情况下也不会.它唯一保证的是乱序评估:它只是首先评估替换中的表达式,然后使用替换结果评估周围的语句.(来源)

这似乎是合理的,但这是真的吗?这个与子shell相关的问题的回答让我觉得有点man bash需要注意:

管道中的每个命令都作为单独的进程执行(即,在子shell中).

这让我想到了主要问题.究竟是什么导致命令替换产生一个副本,这个子shell无论如何都不会被隔离地执行相同的命令?

请考虑以下情况并解释哪些情况会产生额外子shell的开销:

# Case #1
command1
var=$(command1)

# Case #2
command1 | command2
var=$(command1 | command2)

# Case #3
command1 | command 2 ; var=$?
var=$(command1 | command2 ; echo $?)
Run Code Online (Sandbox Code Playgroud)

这些对中的每一对都会产生相同数量的子壳来执行吗?POSIX与bash实现有区别吗?是否有其他情况下使用命令替换会产生一个子shell,在这种情况下运行同一组命令不会?

bash shell optimization subshell command-substitution

24
推荐指数
2
解决办法
2596
查看次数

VIM中对象实例的Python自动完成

当我尝试在对象上使用自动完成时,我在VIM中发现了一个奇怪的行为:

如果我在模块级别实例化对象,VIM自动完成将对我创建的实例起作用:

工作完成

如果我在函数或类中尝试相同时它不再工作:

非工作完成

有谁知道如何解决这个问题,还是没有办法让omnicompletion处理非模块范围内的实例?

python vim autocomplete

17
推荐指数
1
解决办法
4148
查看次数

使用shell/bash脚本读取HTTP输出

我的网址(http://myhost.com/getuser/Default.aspx?username= b772643)返回的总信息的下面一行:

John, Thomas;John.B.Thomas@Company.com
Run Code Online (Sandbox Code Playgroud)

我希望使用没有wget/lynx的shell或bash脚本来阅读这一行.我处于不能使用任何其他实用程序,perl语言等的情况.

bash shell http response

7
推荐指数
3
解决办法
4万
查看次数

是否有一种优雅的方式来存储和评估bash脚本中的返回值?

我在bash中有一系列相当复杂的命令,最终会返回一个有意义的退出代码.脚本后面的各个地方需要有条件地分支命令集是否成功.

目前我存储退出代码并以数字方式对其进行测试,如下所示:

long_running_command | grep -q trigger_word
status=$?

if [ $status -eq 0 ]; then
    : stuff
else

: more code

if [ $status -eq 0 ]; then
    : stuff
else
Run Code Online (Sandbox Code Playgroud)

出于某种原因,感觉这应该更简单.我们存储了一个简单的退出代码,现在我们重复输入数值测试操作来运行它.例如,我可以欺骗使用字符串输出而不是返回代码,这更容易测试:

status=$(long_running_command | grep trigger_word)

if [ $status ]; then
    : stuff
else

: more code

if [ $status ]; then
    : stuff
else
Run Code Online (Sandbox Code Playgroud)

从表面上看,这看起来更直接,但我发现它很脏.

如果其他逻辑不是那么复杂而我只运行一次,我意识到我可以将它嵌入到测试运算符的位置,但是当你需要在其他位置重用结果而不重新运行时,这并不理想.测试:

if long_running_command | grep -q trigger_word; then
    : stuff
else
Run Code Online (Sandbox Code Playgroud)

到目前为止我唯一发现的是将代码作为命令替换的一部分进行分配:

status=$(long_running_command | grep -q trigger_word; echo $?)

if …
Run Code Online (Sandbox Code Playgroud)

bash shell return-value sh

7
推荐指数
1
解决办法
1448
查看次数

如何在Makefile中创建模式规则依赖项可选?

当且仅当文件已经存在时,我想引用依赖项的时间戳.我有这样的模式规则:

%.pdf: %.sil
    sile $< -o $@
Run Code Online (Sandbox Code Playgroud)

这在正常情况下工作得很好,但.sil文件对同名的lua文件进行外部引用(如果存在).我如何知道这一点,以便它检查时间戳并重新生成PDF,如果lua文件更新,但如果文件根本不存在则忽略依赖关系?

这个:

%.pdf: %.sil %.lua
    sile $< -o $@
Run Code Online (Sandbox Code Playgroud)

...仅适用于文件存在的情况,如果不存在则会导致错误.

dependencies makefile gnu-make

6
推荐指数
1
解决办法
1010
查看次数

如何设置Google Oauth以允许使用其他Google帐户登录?

我创建了一个仅限会员的网站,使用Google oauth2授权用户.该网站使用Laravel框架和Artdarek的誓言库构建.

当授权回调来自Google时,我通过电子邮件在数据库中查找用户记录,如果记录存在则进入受保护页面,否则进入注册页面.

问题是我们的一些会员使用了两个Google帐户.一个用户通过其主要帐户注册(e.ge. a@gmail.com).第二天他回来并错误地尝试使用b@gmail.com登录.当然,系统向他显示了注册页面.从那时起,他每次访问该站点时,身份验证机制都会看到他使用他的第二组(不需要的)凭据.

为解决这一案例,我指示他注销所有帐户(双方),清除cookie并从头开始,但这对所有用户来说都不是一个实用的解决方案.在同样的情况下,即使这种措施似乎也无法解决问题.

我该如何解决这个案子?请求oauth身份验证并从正确的帐户返回的正确方法是什么?我可以强制Google要求用户继续使用哪个帐户吗?

laravel google-oauth

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

单元测试车把部分

我想使用 Jest 对我的应用程序进行单元测试,Jest 使用 Handlebar 作为模板引擎。

我能够对 Handlebar 助手进行单元测试,但无法测试 Handlebar 部分。

当我尝试导入 spec.js 中的部分内容时,出现错误:

意外字符“#”(1:2)

下面是partial.handlerbars文件

{{#with (resource 'some_selector') }}
 <img alt="{{altText}}" src="{{image-url}}" />
{{/with}}
Run Code Online (Sandbox Code Playgroud)

下面是partial.spec.js

import partial from './partial.handlebars';
const Handlebars = require('handlebars');
describe('partial suite', ()=> {
  Handlebars.registerPartial('partial', partial);
  it('should always be true', ()=> {
    expect(true).toBe(true);
  })  
})
Run Code Online (Sandbox Code Playgroud)

下面是错误:

 D:/projects/src/components/partials/partial.handlebars: Unexpected character '#' (1:2)
  > 1 | {{#with (resource 'some_selector') }}
      |   ^
Run Code Online (Sandbox Code Playgroud)

javascript node.js handlebars.js jestjs

5
推荐指数
0
解决办法
776
查看次数

从git历史记录中删除垃圾邮件

我已经“继承”了一个肮脏的git存储库,其中包含约5k个有效提交和约5万个垃圾邮件提交(这是以前是世界可写的wiki的编辑历史记录)。我们正在迁移格式,因此这是重写历史记录的好时机。我不想完全放弃历史记录,但是无论从提交量还是原始内容量来看,垃圾邮件都是压倒性的。回滚到最后一次良好提交的旧审核技术留下了很多垃圾。

我可以发现大约80%的错误提交没有太多使用麻烦git log -S和一些正则表达式的工作。大多数垃圾邮件内容非常明显。问题是我不确定要删除的大量提交会如何处理。

请注意,我非常熟悉gitgit rebase每小时使用一次(除非git revise承担了很多负载,否则每分钟都会这样做),而且我知道如何手动完成此操作,但是我需要一个自动化的解决方案。通常情况下,我会转向git filter-branch,但是我不确定要使用哪种工具来检查当前差异。

我曾考虑过编写一个脚本来操纵一个rebase脚本,但是我认为这会给我带来误报的麻烦。我可能可以捕获和删除原始的删除和回滚,但是当我错过该方程式的一侧时会发生什么?我希望可能的匹配中的REST成功,如果其中之一没有完全重新设置基准就不会失败。

注意我不想基于我的匹配来操纵文件的内容或添加/删除文件,我想检查补丁的内容并决定基于此内容进行选择或删除。

最好的git工具是什么?

git rebase spam git-filter-branch

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