Společnost Perplexity AI působící v oblasti umělé inteligence (AI) podala nevyžádanou nabídku na převzetí webového prohlížeče Chrome internetové firmy Google za 34,5 miliardy dolarů (zhruba 723 miliard Kč). Informovala o tom včera agentura Reuters. Upozornila, že výše nabídky výrazně převyšuje hodnotu firmy Perplexity. Společnost Google se podle ní k nabídce zatím nevyjádřila.
Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250812 mikrokódů pro své procesory řešící 6 bezpečnostních chyb.
Byla vydána nová verze 1.25 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
Byla vydána beta verze Linux Mintu 22.2 s kódovým jménem Zara. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze novou XApp aplikaci Fingwit pro autentizaci pomocí otisků prstů nebo vlastní fork knihovny libAdwaita s názvem libAdapta podporující grafická témata. Linux Mint 22.2 bude podporován do roku 2029.
Provozovatel internetové encyklopedie Wikipedie prohrál v Británii soudní spor týkající se některých částí nového zákona o on-line bezpečnosti. Soud ale varoval britského regulátora Ofcom i odpovědné ministerstvo před zaváděním přílišných omezení. Legislativa zpřísňuje požadavky na on-line platformy, ale zároveň čelí kritice za možné omezování svobody slova. Společnost Wikimedia Foundation, která je zodpovědná za fungování
… více »Byla vydána verze 2.0.0 nástroje pro synchronizaci dat mezi vícero počítači bez centrálního serveru Syncthing (Wikipedie). Přehled novinek na GitHubu.
Americký prezident Donald Trump se v pondělí osobně setkal s generálním ředitelem firmy na výrobu čipů Intel Lip-Bu Tanem. Šéfa podniku označil za úspěšného, informují agentury. Ještě před týdnem ho přitom ostře kritizoval a požadoval jeho okamžitý odchod. Akcie Intelu v reakci na schůzku po oficiálním uzavření trhu zpevnily asi o tři procenta.
Byl vydán Debian GNU/Hurd 2025. Jedná se o port Debianu s jádrem Hurd místo obvyklého Linuxu.
V sobotu 9. srpna uplynulo přesně 20 let od oznámení projektu openSUSE na konferenci LinuxWorld v San Franciscu. Pokuď máte archivní nebo nějakým způsobem zajímavé fotky s openSUSE, můžete se o ně s námi podělit.
Byl vydán Debian 13 s kódovým názvem Trixie. Přehled novinek v poznámkách k vydání.
Kopie root@vzdalenypocitac cp /adresar/soubor /cilNo a potřeboval bych napsat skript, který to projde a na vzdáleném PC spustí daný příkaz. Skript napsaný níže by fungoval, kdyby... - když to nechám takto použije read standardní oddělovač a v proměnné $command mám jen "cp" namísto "cp /adresar/soubor /cil" - když definuju proměnnou IFS=";" (a použiju v cfg souboru jako oddělovač ;), tak to píše chybu: ./sript.sh: line 45: ssh root@vzalenypocitac: command not found Poradí někdo co s tím? (Netrvám na použití příkazu read, nic lepšího jsem ale stvořit nedokázal. Ve smyčce cyklu se toho bude provádět více (další dotazy, kontrola))
#!/bin/bash Config=${0%.*}.cfg echo $Config #IFS=; grep -v "^#" $Config | while read label remoteuser command do echo $label sshcmd="ssh $remoteuser" cmd="$($sshcmd $command; exit)" done
Řešení dotazu:
Kopie root@vzdalenypocitac "cp /adresar/soubor /cil"
IFS=';'
, zkuste si dát IFS=' '
před cmd="$($sshcmd $command; exit)"
.
…samozřejmě to nevyřeší zadání, jen to provede první řádek…
IFS=";"
, ale ve skriptu máte IFS=;
(navíc zakomentované), což udělá něco úplně jiného. Takže pokud chcete poradit, dejte sem skript, vstup a chybovou hlášku, které si odpovídají. Nemusejí to samozřejmě být ostrá (a citlivá) data, ale mělo by to být něco, na čem lze chybu reprodukovat.
while read line; do set -- $line label="$1" remoteuser="$2" shift 2 command="$*" ... done < $Config
#!/bin/bash Config=1.cfg #IFS=";" grep -v "^#" $Config | while read label remoteuser command2 command3 do command="mkdir /test" echo $command echo $command2 echo $command3 sshcmd="ssh $remoteuser" cmd1="$($sshcmd $command; exit)" cmd2="$($sshcmd $command2; exit)" cmd2="$($sshcmd $command3; exit)" doneA mám dva konfigurační soubory ve stejném adresáři (1.cfg oddělený tabulátory, 2.cfg oddělený středníky), ale oba obsahují stejná data:
uloha1 root@vzdalenypocitac touch /test/test.txt cp /test/test.txt /test/test_copy.txtKdyž použiju Config=1.cfg a zakomentuju $IFS=";", tak se sice načtou proměnné command2 a command3 špatně, ale aspoň ten natvrdo napsaný $command (mkdir /test) se provede:
mkdir /test touch /test/test.txt cp /test/test.txt /test/test_copy.txt touch: missing file operand Try `touch --help' for more information. bash: /test/test.txt: No such file or directoryKdyž použiju Config=2.cfg a použiju $IFS=";", tak mám sice nádherně načtené proměnné ze souboru, ale nic se neprovede. Nic!
mkdir /test touch /test/test.txt cp /test/test.txt /test/test_copy.txt ./dotaz.sh: line 11: ssh root@cz-brn1-ssm: command not found ./dotaz.sh: line 12: ssh root@cz-brn1-ssm: command not found ./dotaz.sh: line 13: ssh root@cz-brn1-ssm: command not foundA nepomůže ani, když v konfiguračním souboru dám jednotlivé řetězce do uvozovek, když nedefinuju IFS, tak to bere za oddělovače i mezery uvnitř uvozovek. Takže otázka je pořád stejná. Když nedefinuju $IFS, tak čtu špatně soubor. Když definuju $IFS, tak se mi v cyklu odmítá cokoli spustit (dokonce i mimo cyklus)! Co s tím? PS: Ten druhý způsob cyklu s read jsem už taky zkoušel. Chovalo se to stejně. Navíc jsem nevěděl jak se zbavit řádků s komentáři...
while read line; do ... done < $Config
#!/bin/bash Config=1.cfg OLDIFS="$IFS" MYSEP=';' IFS="$MYSEP" grep -v "^#" $Config | while read label remoteuser command2 command3 do command="mkdir /test" echo $command echo $command2 echo $command3 sshcmd="ssh $remoteuser" #nejpozději tady IFS="$OLDIFS" cmd1="$($sshcmd $command; exit)" cmd2="$($sshcmd $command2; exit)" cmd2="$($sshcmd $command3; exit)" IFS="$MYSEP" done
Ach jo. To je opravdu tak těžké pochopit, že pro řešení problému je potřeba ukázat, jak vypadá konfigurační soubor, se kterým máte problémy, ne ten, se kterým je nemáte?
Takže otázka je pořád stejná. Když nedefinuju $IFS, tak čtu špatně soubor. Když definuju $IFS, tak se mi v cyklu odmítá cokoli spustit (dokonce i mimo cyklus)! Co s tím?
Místo tučného písma a vykřičníku raději poskytněte informace potřebné k řešení. Takhle můžu jen hádat, jeden problém by mohl být v tom, že když nastavíte proměnnou IFS
takhle, tak (1) ovlivní úplně všechno, co dělá váš shell a co závisí na její hodnotě, tj. i v té příkazové substituci a (2) jen shodou okolností se vůbec aplikuje na ten příkaz read
. Proměnná IFS
je nebezpečná hračka a měla by se nastavovat jen tam, kde to opravdu potřebujete, tj.
egrep -v '^#' $config | while IFS=';' read label target cmd2 cmd3; do
Další problém, na který narazíte vzápětí, je, že všechno, co je v těle cyklu, tedy i ssh, zpracovává stejný standardní vstup jako read
, takže se ve výsledku zpracuje jen první řádek. Dá se to obejít různě, např. tak, že všemu, co by mohlo něco číst ze vstupu (např. tomu ssh) přesměrujete vstup z /dev/null
. Nebo si lze pomoci trikem
exec 3< <(egrep -v '^#' $config) while IFS=';' read label target cmd2 cmd3 <&3; do
Na vašem místě bych si ovšem nekomplikoval život, konfigurační soubor by vypadal takto
job1 mike@host1 id ; df -h / ; w -f job2 root@host1 id ; w -f job3 root@host2 id ; w -f ; df -h
a skript takto
#!/bin/bash egrep -v '^#' cmds | while read label target cmd; do out=`ssh $target "$cmd" </dev/null` echo -e "job $label:\n$out" done
Tiskni
Sdílej: