因此,我试图将两个 bash 脚本的优点结合起来。我需要获取由成功的 PAM session 创建的环境变量并将它们传递到 MySQL 语句中。
通过将流程分解成多个部分进行故障排除,我能够从以下代码片段开始,它本身可以工作,但它不是整个程序包,也远未使用变量:
#!/bin/bash
mysql -h localhost -u user -ppassword << EOF
insert into database.table (PAM_RHOST,PAM_SERVICE,PAM_TTY) values ('1','2','3');
EOF
好的,以上实际上是将数据插入到 MySQL 数据库中。到目前为止,故障排除非常顺利。所以我的最终目标是将上面的东西与下面的代码片段结合起来,但不是发送电子邮件,我需要脚本来完成上面脚本所做的事情,即获取环境变量并将数据输入 MySQL。用于发送电子邮件的原始脚本是:
#!/bin/bash
adminEmail="someemail@someplace.com"
[ "$PAM_TYPE" == "open_session" ] || exit 0
{
echo "User: $PAM_USER"
echo "Remote Host: $PAM_RHOST"
echo "Service: $PAM_SERVICE"
echo "TTY: $PAM_TTY"
echo "Date: `date`"
echo "Server: `hostname -s`"
} | mail -s "`hostname -s` $PAM_SERVICE login: $PAM_USER" $adminEmail
所以我试图做的是将一些碎片粘在一起,但这是行不通的。我想出了以下内容并需要帮助:
#!/bin/bash
[ "$PAM_TYPE" == "open_session" ] || exit 0
{
echo "User: $PAM_USER"
echo "Remote Host: $PAM_RHOST"
echo "Service: $PAM_SERVICE"
echo "TTY: $PAM_TTY"
echo "Date: `date`"
echo "Server: `hostname -s`"
}
mysql -h localhost -u user -ppassword << EOF
insert into database.table (PAM_USER,PAM_RHOST,PAM_SERVICE,PAM_TTY) values '$PAM_USER','$PAM_RHOST','$PAM_SERVICE,$PAM_TTY');
EOF
最佳答案
您在 SQL 语句的 values
子句中有一些语法错误。
values ('$PAM_USER','$PAM_RHOST','$PAM_SERVICE','$PAM_TTY');
^ ^ ^
关于mysql - 抓取 bash 变量输入数据到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27669631/