小编mid*_*ori的帖子

Go中的SSH:无法进行身份验证,尝试的方法[无],不支持任何受支持的方法

我尝试使用SSH和Go连接到我的一台虚拟机.如果我这样做,它通过命令行完美地工作:

ssh root@my_host
Run Code Online (Sandbox Code Playgroud)

我输入密码,它一切都很好.我试着去Go,这是我的代码:

package main

import (
    "golang.org/x/crypto/ssh"
    "fmt"
)

func connectViaSsh(user, host string, password string) (*ssh.Client, *ssh.Session) {
    config := &ssh.ClientConfig{
        User: user,
        Auth: []ssh.AuthMethod{ssh.Password(password)},
        HostKeyCallback: ssh.InsecureIgnoreHostKey(),
    }

    client, err := ssh.Dial("tcp", host, config)
    fmt.Println(err)

    session, err := client.NewSession()
    fmt.Println(err)

    return client, session
}


func main() {
    client, _ := connectViaSsh("root", "host:22", "password")
    client.Close()
}
Run Code Online (Sandbox Code Playgroud)

如果我运行它会返回一个错误:

ssh: handshake failed: ssh: unable to authenticate, attempted methods [none], no supported methods remain
Run Code Online (Sandbox Code Playgroud)

有谁知道什么可能导致这样的错误.它在Python中使用paramiko并且在shell中运行得很好但在Go中失败.有什么我想念的吗?

ssh go

15
推荐指数
1
解决办法
6411
查看次数

CSV写入文件困难

我应该CSV根据条件为我的文件添加一个特定的标签.该CSV文件有10列,第三,第四和第五列是影响条件最多的列,我在第十列添加我的标签.我这里的代码以无限循环结束:

import csv
import sys

w = open(sys.argv[1], 'w')
r = open(sys.argv[1], 'r')

reader = csv.reader(r)
writer = csv.writer(w)

for row in reader:
    if row[2] or row[3] or row[4] == '0':
        row[9] == 'Label'
        writer.writerow(row)

w.close()
r.close()
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它会以无限循环结束.

编辑:我犯了一个错误,我原来的无限循环程序有这条线:

w = open(sys.argv[1], 'a')
Run Code Online (Sandbox Code Playgroud)

我改'a''w'但这最终删除整个CSV文件本身.所以现在我有一个不同的问题.

python csv python-2.x file-writing python-2.7

9
推荐指数
1
解决办法
652
查看次数

如何从脚本中的文件或管道中选择多行?

我想要一个脚本,称为lines.sh可以管道数据以选择一系列行.

例如,如果我有以下文件:

的test.txt

a 
b
c
d
Run Code Online (Sandbox Code Playgroud)

然后我可以运行:

cat test.txt | lines 2,4
Run Code Online (Sandbox Code Playgroud)

它会输出

b
d
Run Code Online (Sandbox Code Playgroud)

我正在使用zsh,但如果可能的话,我更喜欢使用bash解决方案.

linux bash text-processing sed

7
推荐指数
2
解决办法
5220
查看次数

从本地 python 脚本运行 AWS cli 命令?

我正在尝试运行此 aws s3 ls 命令:

aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize
Run Code Online (Sandbox Code Playgroud)

用这个蟒蛇:

command = 'aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize'
s3_folder_data  = subprocess.check_output(command, stderr=subprocess.STDOUT, shell=True)
print s3_folder_data
Run Code Online (Sandbox Code Playgroud)

但它因以下错误而失败:

subprocess.CalledProcessError: Command 'aws s3 ls s3://path/to/my/bucket/12434 --recursive --human-readable --summarize' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)

当我运行该命令时,该命令本身会起作用。python 脚本由同一台计算机上的同一用户调用。是什么赋予了?

python amazon-s3 amazon-web-services aws-cli

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

列表理解与并发循环python

简单的问题,因为我只想写更多的pythonic代码.我想将以下内容转换为列表理解

index_row = 0
for row in stake_year.iterrows():
    self.assertTrue(row[0] == counts[index_row][0])
    self.assertTrue(row[1][0] == counts[index_row][1])
    index_row += 1
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何通过计数列表.我不希望嵌套为:

[self.assertTrue(x[0] == counts[y][0] for x in stake_year for y in counts]
Run Code Online (Sandbox Code Playgroud)

我现在的代码正在工作,但我想更好地理解python并使用应该使用的语言.

python loops list-comprehension

5
推荐指数
2
解决办法
295
查看次数

如何删除字符串输出的前两个单词

我想删除输出字符串中出现的前两个单词.此字符串也在另一个字符串中.

是)我有的:

for servers in `ls /data/field`    
do    
  string=`cat /data/field/$servers/time`
Run Code Online (Sandbox Code Playgroud)

这发送此文本:

00:00 down server
Run Code Online (Sandbox Code Playgroud)

我想删除"00:00 down",以便它只显示"server".

我尝试过使用cut -d ' ' -f2- $string最终只删除命令搜索的目录.

有任何想法吗?

linux bash awk cut sed

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

使用Python 2按XML在属性中查找所有节点

我有一个XML文件,它有许多具有相同属性的不同节点.

我想知道是否可以使用Python和任何其他软件包(如minidom或ElementTree)找到所有这些节点.

python xml xml-parsing python-2.7

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

可以在BASH环境中制作和操作对象列表

我在一个bash环境中工作,我正在尝试列出样本名称; 每个都将被输入一组命令.用R和Python创建列表很容易.但是,我无法确定是否或如何创建和访问等效列表变量bash.

例如,要在python中创建一个列表,可以写:

samples=[sample1 sample2 sample3]
Run Code Online (Sandbox Code Playgroud)

要访问列表中的第一个变量,可以使用:

currentSample = samples[0]
Run Code Online (Sandbox Code Playgroud)

可以bash使用文本字符串列表执行类似的操作吗?

unix linux bash list object

3
推荐指数
1
解决办法
572
查看次数

为什么请求使用ssl认证返回html?

我有一个问题

我正在尝试将一些数据发布到网络服务器并获得响应.Webserver具有SSL证书验证,因此我为其提供文件.在响应中我应该收到xml文件,但我收到一些HTML.

我的小脚本看起来像这样:

import requests, sys, os

program_directory=sys.path[0]
verify = os.path.join(program_directory, "test.pem")
data='some data'

print requests.post('https://somewebsite', data=data, verify=verify).text
Run Code Online (Sandbox Code Playgroud)

这就是我在html之前得到的:

C:\Python27\lib\site-packages\requests\packages\urllib3\connection.py:251: SecurityWarning: Certificate has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/shazow/urllib3/issues/497 for details.) SecurityWarning
Run Code Online (Sandbox Code Playgroud)

如果我使用verify=False并且不提供文件,它可以正常工作并返回正确的数据.什么可能是一个问题,为什么我会收到此警告和HTML?

python ssl python-2.7 python-requests

3
推荐指数
1
解决办法
2871
查看次数

从字符串解析有效的JSON对象或数组

我有一个字符串,可以是以下两种形式之一:

name multi word description {...}
Run Code Online (Sandbox Code Playgroud)

要么

name multi word description [...]
Run Code Online (Sandbox Code Playgroud)

其中{...}[...]是有效的JSON。我对仅解析字符串的JSON部分感兴趣,但是我不确定做到这一点的最佳方法(尤其是因为我不知道字符串将是两种形式中的哪种)。这是我目前的方法:

import json

string = 'bob1: The ceo of the company {"salary": 100000}' 
o_ind = string.find('{')
a_ind = string.find('[')

if o_ind == -1 and a_ind == -1:
    print("Could not find JSON")
    exit(0)

index = min(o_ind, a_ind)
if index == -1:
    index = max(o_ind, a_ind)

json = json.loads(string[index:])
print(json)
Run Code Online (Sandbox Code Playgroud)

它有效,但是我不禁觉得它可以做得更好。我以为可能是正则表达式,但是在匹配子对象和数组而不是最外层的json对象或数组时遇到了麻烦。有什么建议么?

python regex python-3.x

3
推荐指数
1
解决办法
7191
查看次数