codepenなるサービスをちょまどさんが利用してたので、まねして使ってみる。
オンライン上で書いたコードがこんな感じで共有と実行できる。
便利な時代になったもんだ。
codepenなるサービスをちょまどさんが利用してたので、まねして使ってみる。
オンライン上で書いたコードがこんな感じで共有と実行できる。
便利な時代になったもんだ。
仕事でSFTPを使うことになったので、家のPC2台使って遊んでた。
パスワード入力してログインするまではスルッと出来た。
そのまま秘密鍵・公開鍵作って、渡して終わり~っておもってたが、そこで行き詰る。
権限が悪いのか・ファイル名が悪いのか・configとかの設定が悪いのか。
上手くいくと思ったら止まる、これまさに開発あるある。
で、最終的な勘違いポイントは、鍵を作るのはサーバ側だと思ってた点でした。
ssh-keygenコマンドをクライアント側で実行し、作成したKeyをサーバに渡してあげると、無事にパスワードなしで接続することが出来ました!
勘違いを気づかせてもらったページ
sftpのパスワードなしでログイン -sftpのパスワードなしで自動化をした- UNIX・Linux | 教えて!goo
(この質問者さんもまさに自分と同じ勘違いをしていらしたw)
全体的に参考にさせてもらったページ
クライアントとサーバーで公開鍵認証を使用した SFTP のセットアップと動作確認を行う - SFTP - Tips - ソーサリーフォース (sorceryforce.net)
最後にpowerShellで以下のようなSFTPコマンド実行したところ無事にputできた。
echo "put C:\Users\user\.ssh\test.txt file.txt" | sftp username@server
なんとかお仕事でも無事に進められそうです。
備忘禄
あるシステムの作業実績データのCSVを抜き出せるが、データが余分な人のデータまで抜き出してしまう。必要な行の必要な項目だけまとめたCSVを抽出する。
DBをRead権限で参照させてほし・・・・
import openpyxl
import pprint
import os
import csv
SheetName = "Sheet1"
caseNameColumn = "A"
####書き出しエクセルの情報
#書き出すエクセルファイル
resultFileName = 'output.xlsx'
resultFile = openpyxl.load_workbook(resultFileName)
# シートを取得
sheetResult = resultFile['Sheet1']
#カラム
name = "A"
month = "B"
project = "C"
yoteikosu = "D"
resultCount = 1
#とりあえず20行分まわす
for num in range(20):
caseGyo = str(num + 1)
# print(caseGyo)
caseName = caseNameColumn + caseGyo
wb = openpyxl.load_workbook("対象.xlsx")
sheet = wb[SheetName]
cell1 = sheet[caseName]
if (cell1.value == None):
break
print(cell1.value)
#------------
csvfile = open("data.csv", 'r')
reader = csv.reader(csvfile)
for row in reader:
if (cell1.value == row[0]):
resultCount = resultCount + 1
print("csv",row[3], " " , resultCount)
sheetResult[name + str(resultCount)] = row[0]
sheetResult[month + str(resultCount)] = row[0]
sheetResult[project + str(resultCount)] = row[1]
sheetResult[yoteikosu + str(resultCount)] = row[2]
# 保存する
resultFile.save(resultFileName)
備忘禄
複数の規定フォーマットエクセルから、特定セルを抜き出すコード
不具合票のブックが大量にあるときに利用
##############################################
#
# 出力結果
# PGID、 ステータス、記載日、起票者、タイトル、説明
##############################################
import openpyxl
import pprint
import os
###読み込むエクセルの情報
#Sheet名
sheetName = "Sheet1"
#取得項目のセル
cellIDfoldorColumn = "A1"
cellIDpgidColumn = "B1"
cellIDstatusColumn = "C1"
cellIDdateColum = "D1"
cellIDpersonColum = "E1"
cellIDtitleColum = "F1"
cellIDdiscriptionColum = "G1"
####書き出しエクセルの情報
#書き出すエクセルファイル
resultFile = openpyxl.load_workbook('out.xlsx')
# シートを取得
sheetResult = resultFile['Sheet1']
#カラム
foldorColumn = "A"
pgidColumn = "B"
statusColumn = "C"
dateColum = "D"
personColum = "E"
titleColum = "F"
discriptionColum = "G"
filenameColum = "H"
count = 0
#検索対象のフォルダ
folder1 = "wk2/"
files = os.listdir(folder1)
for fol in files:
path = os.path.join(folder1, fol)
if os.path.isdir(path):
# print("[folder]", fol)
files2 = folder1 + fol + "/"
path2 = os.listdir(files2)
for f in path2:
count = count + 1
# print(path2)
wb = openpyxl.load_workbook( path + "/" + f)
sheet = wb[sheetName]
# cell1 = sheet[cellIDfoldorColumn]
# print(f, ",", cell1.value )
sheetResult[foldorColumn + str(count)] = sheet[cellIDfoldorColumn ].value
sheetResult[pgidColumn + str(count)] = sheet[cellIDpgidColumn ].value
sheetResult[statusColumn + str(count)] = sheet[cellIDstatusColumn ].value
sheetResult[dateColum + str(count)] = sheet[cellIDdateColum ].value
sheetResult[personColum + str(count)] = sheet[cellIDpersonColum ].value
sheetResult[titleColum + str(count)] = sheet[cellIDtitleColum ].value
sheetResult[discriptionColum+ str(count)] = sheet[cellIDdiscriptionColum].value
sheetResult[filenameColum + str(count)] = f
# 保存する
resultFile.save('out.xlsx')
ほんとに備忘禄
$formatted_date = (Get-Date).ToString("yyyyMMddHHmmss")
mkdir $formatted_date
#仮のファイル作成
Write-Output test | Out-File .\$formatted_date\test.txt
#圧縮
Compress-Archive -Path $formatted_date -DestinationPath .\test\$formatted_date
GithubのIssuesを一覧出力(Excel参照可能)する | SEの徒然旅ブログ (ujise.com)
こちらの記事を参考にさせていただきました。
Pythonで記述
ー-------------------
import json
import requests
import os
import pandas as pd
def main():
os.environ["no_proxy"] = "localhost"
token = ""
# トークンを設定している場合は以下のtokenをurlの末尾に + toeknで付与する。
# token = "?access_token=生成されたtokentoken"
url = "https://api.github.com/repos/SatoKimihide/IssueTest/issues?state=all"
response = requests.get(url, verify=False)
json_dict = json.loads(response.text)
csv_header = ["No","ステータス","アサイン","ラベル", "title", "内容", "コメント"]
csv_body =
cnt = 1
for issue_items in json_dict:
csv_line_body =
csv_line_body.append(str(cnt))
csv_line_body.append(issue_items["state"])
if len(issue_items["assignees"]) != 0:
assignees_str = ""
for assignees_items in issue_items["assignees"]:
assignees_str = assignees_items["login"] + ":" + assignees_str
csv_line_body.append(assignees_str)
else:
csv_line_body.append("")
# csv_line_body.append(issue_items["labels"])
if len(issue_items["labels"]) != 0:
labels_str = ""
for labels_items in issue_items["labels"]:
labels_str = labels_items["name"] + ":" + labels_str
csv_line_body.append(labels_str)
else:
csv_line_body.append("")
csv_line_body.append(issue_items["title"])
csv_line_body.append(issue_items["body"])
if issue_items["comments"] > 0:
url = issue_items["comments_url"] + token
comments_response = requests.get(url, verify=False)
comments_json = json.loads(comments_response.text)
comment_str = ""
for commnet in comments_json:
comment_str = commnet["updated_at"] + "\n"+ commnet["body"] + "\n\n" + comment_str
csv_line_body.append(comment_str)
else:
csv_line_body.append("")
csv_body.append(csv_line_body)
cnt = cnt + 1
df = pd.DataFrame(csv_body, columns=csv_header)
df.to_csv("output.csv", index=False)
if __name__ == '__main__':
main()
import json
import requests
import os
import pandas as pd
def main():
os.environ["no_proxy"] = "localhost"
token = ""
# トークンを設定している場合は以下のtokenをurlの末尾に + toeknで付与する。
# token = "?access_token=生成されたtokentoken"
#↓のXXXXXXはアカウント名。ZZZZZZはレポジトリ名
url = "https://api.github.com/repos/XXXXXX/ZZZZZZ/issues?state=all"
response = requests.get(url, verify=False)
json_dict = json.loads(response.text)
csv_header = ["No","ステータス","アサイン","ラベル", "title", "内容", "コメント"]
csv_body =
cnt = 1
for issue_items in json_dict:
csv_line_body =
csv_line_body.append(str(cnt))
csv_line_body.append(issue_items["state"])
if len(issue_items["assignees"]) != 0:
assignees_str = ""
for assignees_items in issue_items["assignees"]:
assignees_str = assignees_items["login"] + ":" + assignees_str
csv_line_body.append(assignees_str)
else:
csv_line_body.append("")
# csv_line_body.append(issue_items["labels"])
if len(issue_items["labels"]) != 0:
labels_str = ""
for labels_items in issue_items["labels"]:
labels_str = labels_items["name"] + ":" + labels_str
csv_line_body.append(labels_str)
else:
csv_line_body.append("")
csv_line_body.append(issue_items["title"])
csv_line_body.append(issue_items["body"])
if issue_items["comments"] > 0:
url = issue_items["comments_url"] + token
comments_response = requests.get(url, verify=False)
comments_json = json.loads(comments_response.text)
comment_str = ""
for commnet in comments_json:
comment_str = commnet["updated_at"] + "\n"+ commnet["body"] + "\n\n" + comment_str
csv_line_body.append(comment_str)
else:
csv_line_body.append("")
csv_body.append(csv_line_body)
cnt = cnt + 1
df = pd.DataFrame(csv_body, columns=csv_header)
df.to_csv("output.csv", index=False)
if __name__ == '__main__':
main()
ー-------------------
作成したCSVイメージ
APIのパラメータ設定(urlの部分)で、出力する条件を指定できる。
ラベルとかアサインなどの複数項目が設定できるところは、上記の方法で記載すれば取れる。