LVL*_*ron 8 ssh remote-management sqlite
如果这应该转移到 DBA 交换,我深表歉意。对我来说,感觉更像是 linux 而不是 DB,所以这里是:
我有一些机器每晚运行预定的 cron 作业并将输出通过电子邮件发送给我。我不想要这样的电子邮件。总的来说,我认为我们使用电子邮件的方式是坏的,但那是另一回事了。
所以我开始考虑我可以保留一个中央 SQLite 数据库来存储有关作业何时开始和完成的信息,甚至可能是输出。然后我可以建立一个网页来查询,让我知道昨晚发生了什么。
所以我想出了一个简单的模式,可以在脚本的开头运行这个命令。
sqlite3 dbname.db "UPDATE data SET LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'"
Run Code Online (Sandbox Code Playgroud)
所以现在我有一个记录,说明我的工作是在什么时候开始的。万岁。然后我可以运行一个类似的命令来放置作业结束的时间。
所以。如果数据库和任务在同一台机器上,那效果很好。我去另一台机器,需要更新sqlite数据库......我怎样才能有效地做到这一点?
我试过这个
ssh aaron@10.1.150.53 'sqlite3 /home/aaron/dbname.db "UPDATE data SET LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'"'
Run Code Online (Sandbox Code Playgroud)
但这会返回:
Error: no such column: NOW
Run Code Online (Sandbox Code Playgroud)
我尝试了一些变体,但一无所获。
我很亲近吗?我应该做一些完全不同的事情吗?我是在重新发明轮子吗?
rus*_*ush 10
这一切都来自引用。试试这个:
ssh aaron@10.1.150.53 'sqlite3 /home/aaron/dbname.db "UPDATE data SET \
LastStart = DATETIME('''NOW''') WHERE TaskName = '''taskname'''"'
Run Code Online (Sandbox Code Playgroud)
附:您需要引用NOW
,否则sqlite 将尝试查找具有此类名称的列。但是你的引号'
会被 ssh 的引号吃掉。您无法逃脱'
,因此使用了三个引号'''
(第一个关闭 ssh 引用,第二个是您需要传递给 sqlite 的引用,最后一个再次打开 ssh 引用)。
pps。此外,您可以像这样反引号:
ssh aaron@10.1.150.53 "sqlite3 /home/aaron/dbname.db \"UPDATE data SET \
LastStart = DATETIME('NOW') WHERE TaskName = 'taskname'\""
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13301 次 |
最近记录: |