質問編集履歴
1
実際のコードを記載していなかったため、加筆いたしました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Pythonを使って、ファイルの中身を成形したい
|
1
|
+
【内容加筆】Pythonを使って、ファイルの中身を成形したい
|
test
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
Pythonで、sshで接続した先にある、テキストファイルを読み込んで、中身を書き換えたいと考えております。
|
1
|
+
Pythonで、sshで接続した先にある、テキストファイルを読み込んで、中身を書き換え、「JSON形式の文字列にしたい」と考えております。
|
2
2
|
|
3
|
-
---------------------------------------------------------------------------------------
|
4
3
|
|
4
|
+
|
5
|
+
※コードはAWSのlambdaに取り込んで動作させたいと考えております。
|
6
|
+
|
5
|
-
※sshで接続した先にあるファイルを読み込んで表示する
|
7
|
+
※sshで接続した先にあるファイルを読み込んで表示することはできています。
|
6
8
|
|
7
9
|
|
8
10
|
|
@@ -30,29 +32,103 @@
|
|
30
32
|
|
31
33
|
|
32
34
|
|
33
|
-
という形に成形したい
|
35
|
+
という形に成形したいです。
|
34
36
|
|
35
37
|
|
36
38
|
|
37
|
-
|
39
|
+
エラーとしては以下の通りです。
|
38
40
|
|
39
|
-
|
41
|
+
Syntax error in module 'lambda_function': invalid syntax
|
40
42
|
|
41
43
|
|
42
44
|
|
45
|
+
実際のコードは以下の通りになります。
|
46
|
+
|
47
|
+
``````python
|
48
|
+
|
49
|
+
import paramiko
|
50
|
+
|
51
|
+
import boto3
|
52
|
+
|
43
|
-
|
53
|
+
import datetime
|
54
|
+
|
55
|
+
import os
|
44
56
|
|
45
57
|
|
46
58
|
|
59
|
+
print('Loading testdata lambda function')
|
60
|
+
|
61
|
+
today = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))).strftime('%Y%m%d')
|
62
|
+
|
63
|
+
#now = datetime.datetime.now()
|
64
|
+
|
47
|
-
|
65
|
+
yesterday = (datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9))) - datetime.timedelta(days=1)).strftime('%Y%m%d')
|
48
66
|
|
49
67
|
|
50
68
|
|
51
|
-
|
69
|
+
def lambda_handler(event, context):
|
52
70
|
|
53
|
-
どのように修正すればよろしいでしょうか。
|
54
71
|
|
72
|
+
|
73
|
+
#接続先情報の設定
|
74
|
+
|
75
|
+
client = paramiko.SSHClient()
|
76
|
+
|
77
|
+
client.set_missing_host_key_policy(paramiko.WarningPolicy())
|
78
|
+
|
79
|
+
user = os.environ['ID']
|
80
|
+
|
81
|
+
passwd = os.environ['PASS']
|
82
|
+
|
83
|
+
ip = os.environ['IP']
|
84
|
+
|
85
|
+
client.connect(ip,port=22,username=user,password=passwd)
|
86
|
+
|
87
|
+
|
88
|
+
|
55
|
-
|
89
|
+
#接続先サーバー実行コマンド
|
90
|
+
|
91
|
+
stdin, stdout, stderr = client.exec_command('cat /home/tmp/test.txt')
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
# アップロードファイルの内容格納
|
96
|
+
|
97
|
+
lines = stdout.read()
|
98
|
+
|
99
|
+
file_contents = '{"数字1": ' + lines[2] + ', "数字2": ' + lines[4] + ', "数字3": ' + lines[5]}'
|
100
|
+
|
101
|
+
print(file_contents)
|
102
|
+
|
103
|
+
file_contents = file_contents.replace('\n','')
|
104
|
+
|
105
|
+
print(file_contents)
|
106
|
+
|
107
|
+
client.close()
|
108
|
+
|
109
|
+
bucket = os.environ['BUCKET']
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
#取得ファイルの保存
|
114
|
+
|
115
|
+
key = 'Testdata/' + 'json/' + today + '/' +'testdata_' + yesterday + '.json'
|
116
|
+
|
117
|
+
print(key)
|
118
|
+
|
119
|
+
s3 = boto3.resource('s3')
|
120
|
+
|
121
|
+
obj = s3.Object(bucket,key)
|
122
|
+
|
123
|
+
obj.put(Body=file_contents)
|
124
|
+
|
125
|
+
return
|
126
|
+
|
127
|
+
```
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
56
132
|
|
57
133
|
|
58
134
|
|