我尝试使用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中失败.有什么我想念的吗?
我应该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
文件本身.所以现在我有一个不同的问题.
我想要一个脚本,称为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解决方案.
我正在尝试运行此 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 脚本由同一台计算机上的同一用户调用。是什么赋予了?
简单的问题,因为我只想写更多的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并使用应该使用的语言.
我想删除输出字符串中出现的前两个单词.此字符串也在另一个字符串中.
是)我有的:
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
最终只删除命令搜索的目录.
有任何想法吗?
我有一个XML文件,它有许多具有相同属性的不同节点.
我想知道是否可以使用Python和任何其他软件包(如minidom或ElementTree)找到所有这些节点.
我在一个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
使用文本字符串列表执行类似的操作吗?
我有一个问题
我正在尝试将一些数据发布到网络服务器并获得响应.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?
我有一个字符串,可以是以下两种形式之一:
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 ×6
bash ×3
linux ×3
python-2.7 ×3
sed ×2
amazon-s3 ×1
awk ×1
aws-cli ×1
csv ×1
cut ×1
file-writing ×1
go ×1
list ×1
loops ×1
object ×1
python-2.x ×1
python-3.x ×1
regex ×1
ssh ×1
ssl ×1
unix ×1
xml ×1
xml-parsing ×1