bash script um mysql qouta anzeigen zu lassen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/bash-script-um-mysql-qouta-anzeigen-zu-lassen_242177/page_1 - zur Vollversion wechseln!


maze92 schrieb am 21.02.2015 um 21:55

Hey,

Ich bin recht neu auf dem gebiet scripte und mysql, hab mir aber ein kleines script gebastelt,
wenn ich die befehle ganz normal eingebe funktioniert es, aber im script wills net funktionieren...

Code: SHELL
mysql -h localhost -u root -pPASS
SELECT 
  table_schema AS 'Datenbankname',
  Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)',
  Round( SUM( index_length ) / 1024 / 1024, 3 ) AS 'Index (MB)',
  Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Gesamt (MB)',
  Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Freier Speicher (MB)'
FROM information_schema.tables
GROUP BY table_schema ; 

Ausgabe sollte so aussehen:
Code:
+--------------------+------------+------------+-------------+----------------------+
| Datenbankname      | Daten (MB) | Index (MB) | Gesamt (MB) | Freier Speicher (MB) |
+--------------------+------------+------------+-------------+----------------------+
| information_schema |      0.000 |      0.009 |       0.009 |                0.000 |
| mysql              |      0.556 |      0.097 |       0.652 |                0.001 |
| ownclouddb         |      3.328 |      1.469 |       4.797 |              168.000 |
| performance_schema |      0.000 |      0.000 |       0.000 |                0.000 |
+--------------------+------------+------------+-------------+----------------------+
4 rows in set (0.01 sec)

Aber wenn Ich es ausführe funktioniert zwar der login aber nicht mehr.
im endeffekt schaut es dann so aus:

Code: SHELL
mzengerer@srv:~$ ./sql-quota.sh
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7786
Server version: 5.5.41-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> ^CCtrl-C -- exit!
Aborted
./sql-quota.sh: Zeile 3: SELECT: Kommando nicht gefunden.
./sql-quota.sh: Zeile 4: table_schema: Kommando nicht gefunden.
./sql-quota.sh: Zeile 5: Syntaxfehler beim unerwarteten Wort »SUM«
./sql-quota.sh: Zeile 5: `  Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)','
mzengerer@srv:~$

Irgendwelche Ideen dazu?

lg, maze92


COLOSSUS schrieb am 21.02.2015 um 22:30

Code: SHELL
#!/bin/bash
mysql -h localhost -u root -pPASS <<EOF
SELECT 
  table_schema AS 'Datenbankname',
  Round( SUM( data_length ) / 1024 / 1024, 3 ) AS 'Daten (MB)',
  Round( SUM( index_length ) / 1024 / 1024, 3 ) AS 'Index (MB)',
  Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Gesamt (MB)',
  Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Freier Speicher (MB)'
FROM information_schema.tables
GROUP BY table_schema ;
EOF

So sollte es klappen. Hab keine mysql-Shell in Reichweite, um das auszuprobieren.


-=Willi=- schrieb am 21.02.2015 um 23:54

Erklärung dazu warums nicht funktioniert: Jede Zeile in einem Bash-Script wird für sich ausgeführt. In deinem Script öffnest du in der ersten Zeile eine MySQL-Shell. Wenn du mit Ctrl+C dann rausgehst gehts ist der Befehl `mysql` abgeschlossen und es geht mit der zweiten Zeile, nämlich SELECT, weiter. Das ist etwas, was die Shell nicht interpretieren kann. Deshalb "SELECT: Kommando nicht gefunden.".

Du musst also dem Befehl `mysql` die Query irgendwie anders mitgeben was mit der von COLOSSUS gezeigten Here-Document-Syntax beispielweise geht.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025